save works

This commit is contained in:
Rongsong Shen 2026-03-03 16:49:26 +08:00
parent f4b1ba4cd7
commit acfbec875b
51 changed files with 622 additions and 1175 deletions

View file

@ -6,6 +6,6 @@
#include "xce/types.h"
extern xce_config_t *makeConfig(xce_config_t *);
extern xce_config_t* makeConfig(var, xce_config_t*);
#endif

View file

@ -9,10 +9,6 @@
#include "xlist.h"
#include "zarray.h"
typedef struct {
kvmgr_t groups;
} groupmgr_t;
extern xce_group_t* makeGroup(var, xce_group_config_t*, char*);
extern int groupmgr_init(var*, int, int);
extern void groupmgr_fini(var);

View file

@ -13,63 +13,6 @@ typedef enum {
KVMGR_KEY_STRING
} kvmgr_key_type_t;
typedef struct {
mylock_t lock;
htab_t htab;
zarray_t data;
} kvmgr_t;
typedef struct {
kvmgr_t resdef;
int nshared;
int nunshared;
} resmgr_t;
typedef struct {
kvmgr_t queues;
} qmgr_t;
typedef struct {
kvmgr_t jobs;
} jobmgr_t;
typedef struct {
kvmgr_t workers;
} workermgr_t;
extern int kvmgr_init(kvmgr_t*, hash_key_fn_t, int, int, zarray_item_killer_t);
extern void kvmgr_fini(kvmgr_t*);
extern void* kvmgr_lock(kvmgr_t*, void*, int);
extern void* kvmgr_lock_byid(kvmgr_t*, int, int);
extern int32_t kvmgr_add(kvmgr_t*, void*, void*);
extern int32_t kvmgr_put(kvmgr_t*, void*, int, void*);
extern void kvmgr_del(kvmgr_t*, void*);
extern int kvmgr_iter(kvmgr_t*, zarray_iter_skip_fn_t, xlist_t*, void*);
extern int resmgr_init(resmgr_t*, int, int, zarray_item_killer_t);
extern void resmgr_fini(resmgr_t*);
extern int32_t resmgr_add_res(resmgr_t*, xce_resource_t*);
extern xce_resource_t* resmgr_lockres(resmgr_t*, char*, int);
extern xce_resource_t* resmgr_lock_byid(resmgr_t*, int, int);
extern void resmgr_del_res(resmgr_t*, xce_resource_t*);
extern int resmgr_iter(resmgr_t*, xlist_t*, void*);
extern void qmgr_fini(qmgr_t*);
extern int qmgr_init(qmgr_t*, int, int, zarray_item_killer_t);
extern int qmgr_add(qmgr_t*, queue_t*);
extern queue_t* qmgr_lockq(qmgr_t*, char*, int);
extern void qmgr_delq(qmgr_t*, queue_t*);
extern int qmgr_iter(qmgr_t*, xlist_t*, void*);
extern int jobmgr_init(jobmgr_t*, int, int, zarray_item_killer_t);
extern void jobmgr_fini(jobmgr_t*);
extern int workermgr_init(workermgr_t*, int, int, zarray_item_killer_t);
extern void workermgr_fini(workermgr_t*);
extern int workermgr_add(workermgr_t*, worker_t*);
extern worker_t* workermgr_lock(workermgr_t*, char*, int);
extern worker_t* workermgr_lock_byid(workermgr_t*, int, int);
extern void workermgr_del(workermgr_t*, worker_t*);
typedef struct {
kvmgr_key_type_t key_type;
unsigned int dynamic : 1;

View file

@ -1,76 +0,0 @@
#if !defined(__OBJMGR_H__)
#define __OBJMGR_H__
#include "config.h"
#include <stdarg.h>
#include <stddef.h>
#include <stdint.h>
#include "htab.h"
#include "mylock.h"
#include "zarray.h"
#define OBJ_MAGIC (0x4a424f58)
#define OBJREF_NOP \
(0) /* ref obj without lock, \
* just keep object alive */
#define OBJREF_READ (1) /* ref obj with read lock */
#define OBJREF_UPDATE (2) /* ref obj with write lock */
typedef void* (*obj_create_fn_t)(void*, void*, va_list);
typedef void (*obj_fini_fn_t)(void*);
typedef void (*objtype_fini_fn_t)(void*);
typedef struct {
char* type; /* name of type */
mylock_t lock;
obj_create_fn_t fn_create; /* function to initialize object */
obj_fini_fn_t fn_fini; /* function to finalize obj */
objtype_fini_fn_t fn_type_fini; /* function to finalize typeinfo */
void* typedata; /* extra information for type */
} objtype_t;
typedef struct {
uint32_t magic;
uint32_t nref;
my_rwlock_t rwlock;
mylock_t lock;
objtype_t* type;
int32_t exdata;
uint32_t nread : 28;
uint32_t nwrite : 4;
} myobj_t;
typedef struct {
mylock_t lock;
htab_t names;
zarray_t types;
} objmgr_t;
#define MYOBJ_TO_OBJ(type, myobj) ((type)(((char*)myobj) + sizeof(myobj_t)))
#define TO_MYOBJ(obj) ((myobj_t*)(((char*)obj) - sizeof(myobj_t)))
#define DEREF_OBJ(obj) \
if ((obj) != NULL) { \
obj_deref(obj); \
(obj) = NULL; \
}
extern int objmgr_init(objmgr_t*);
extern void objmgr_fini(objmgr_t*);
extern int objmgr_register(objmgr_t*, objtype_t*);
extern int obj_init(objmgr_t*, objtype_t*, int32_t, myobj_t*);
extern void* create_obj_by_typeid(objmgr_t*, int, ...);
extern void* create_obj_by_typename(objmgr_t*, char*, ...);
extern void* obj_ref(void*, int);
extern void obj_deref(void*);
extern int typeid_of_name(objmgr_t*, char*);
extern objmgr_t* objmgr_get_default();
extern int objmgr_set_default(objmgr_t*);
extern myobj_t* obj_alloc(size_t);
#endif

View file

@ -6,6 +6,6 @@
#include "xce/types.h"
extern xce_resource_t* makeResource(xce_resource_t*);
extern xce_resource_t* makeResource(var, xce_resource_t*);
#endif

View file

@ -14,6 +14,8 @@
#include "xce/errnox.h"
#include "xce/types.h"
#define CONTAINER_OF(P, T, F) ((T*)(((char*)(P)) - offsetof(T, F)))
#define MAKE_JOBID(cluster, apiserver, timestamp, tag, sequence) \
((((uint64_t)cluster) << CLUSTER_ID_SHIFT) \
| (((uint64_t)apiserver) << APISERVER_ID_SHIFT) \

View file

@ -14,7 +14,6 @@
#include "myconf.h"
#include "mylock.h"
#include "netio.h"
#include "objmgr.h"
#include "vtaskmgr.h"
#include "xce/types.h"
#include "xlist.h"
@ -94,7 +93,6 @@ typedef struct {
xce_peerinfo_t* myhost;
hooksys_t hooksys;
iomgr_t iomgr;
objmgr_t objmgr;
zarray_t endpoints;
endpoint_t ep;
zarray_t configs;
@ -111,8 +109,6 @@ typedef struct {
var workermgr;
var qmgr;
var configmgr;
kvmgr_t ugmgr;
kvmgr_t hgmgr;
vtaskmgr_t vtaskmgr;
cbuf_t wbuf;
int running;

View file

@ -11,11 +11,10 @@
#include "kvmgr.h"
#include "xce/types.h"
extern int build_consumer(xce_consumer_t**, groupmgr_t*, xce_consumer_type_t,
int, xce_group_config_t*, char*);
extern int build_consumer(xce_consumer_t**, var, xce_consumer_type_t, int,
xce_group_config_t*, char*);
extern void kill_consumer(xce_consumer_t*);
extern int build_limit(xce_limit_t**, groupmgr_t*, groupmgr_t*, groupmgr_t*,
groupmgr_t*, xce_limit_config_t*);
extern int build_limit(xce_limit_t**, var, var, var, var, xce_limit_config_t*);
extern int match_limit(xce_limit_t*, int, ...);
extern int build_vres_name(char**, xce_limit_t*, char*, char*, char*);
extern int is_host_based_limit(var, xce_limit_t*);

View file

@ -4,25 +4,6 @@
#include <rtti.h>
#include "objmgr.h"
typedef struct {
htab_t tab;
zarray_t strings;
} xstring_typedata_t;
#define XSTRING_OBJ_TYPE_HTAB(obj) \
(((xstring_typedata_t*)obj->type->typedata)->tab)
#define XSTRING_OBJ_TYPE_STRINGS(obj) \
(((xstring_typedata_t*)obj->type->typedata)->strings)
#define XSTRING_TYPE_HTAB(type) (((xstring_typedata_t*)type->typedata)->tab)
#define XSTRING_TYPE_STRINGS(type) \
(((xstring_typedata_t*)type->typedata)->strings)
extern int register_xstring(objmgr_t*, int, int);
extern int xstring_table_init(int);
extern void xstring_table_fini();
extern char* makeString(char*);