improve resmgr

This commit is contained in:
Rongsong Shen 2025-12-18 16:20:41 +08:00
parent 4db6b039c5
commit 1f1e4fdaba
10 changed files with 107 additions and 221 deletions

View file

@ -9,6 +9,8 @@
#include "xce/types.h"
#include "zarray.h"
#include "controller.capnp.h"
int kvmgr_init(kvmgr_t* mgr, hash_key_fn_t keyfn, int nslots, int delta,
zarray_item_killer_t killer)
{
@ -183,3 +185,64 @@ int kvmgr_iter(kvmgr_t* mgr, zarray_iter_skip_fn_t skipfn, xlist_t* l,
return rc;
}
int resmgr_init(resmgr_t* mgr, int nslots, int delta,
zarray_item_killer_t killer)
{
int rc = 0;
rc = kvmgr_init(&(mgr->resdef), string_hash_key, nslots, delta, killer);
if (rc < 0) {
return rc;
}
mgr->nshared = 0;
mgr->nunshared = 0;
return 0;
}
void resmgr_fini(resmgr_t* mgr)
{
kvmgr_fini(&(mgr->resdef));
mgr->nshared = 0;
mgr->nunshared = 0;
}
int32_t resmgr_add_res(resmgr_t* mgr, xce_resource_t* res)
{
int rc = 0;
rc = kvmgr_add(&(mgr->resdef), (void*)res->name, (void*)res);
if (rc < 0) {
return rc;
}
if (res->flags & XCE_RESF_SHARED) {
res->idx = mgr->nshared;
mgr->nshared++;
} else {
res->idx = mgr->nunshared;
mgr->nunshared++;
}
return rc;
}
xce_resource_t* resmgr_lockres(resmgr_t* mgr, char* resname, int op)
{
xce_resource_t* r = NULL;
r = (xce_resource_t*)kvmgr_lock(&(mgr->resdef), (void*)resname, op);
return r;
}
void resmgr_del_res(resmgr_t* mgr, xce_resource_t* r)
{
kvmgr_del(&(mgr->resdef), (void*)r->name);
}
int resmgr_iter(resmgr_t* mgr, xlist_t* l, void* arg)
{
return kvmgr_iter(&(mgr->resdef), NULL, l, arg);
}