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

@ -28,7 +28,8 @@ int handle_clusterconf(cluster_t* c, endpoint_t* ep, xce_request_t* request)
}
};
/* clang-format on */
int i;
int i;
xlist_t clist, qlist, rlist, wlist;
init_reply_by_req(&reply, request);
@ -36,14 +37,26 @@ int handle_clusterconf(cluster_t* c, endpoint_t* ep, xce_request_t* request)
reply.data_which = RequestReply_data_clusterconf;
reply.data.clusterconf = &clusterconf;
collect_confvars(c, NULL, &(clusterconf.cfglist.count),
&(clusterconf.cfglist.configs));
collect_queues(c, NULL, &(clusterconf.qlist.count),
&(clusterconf.qlist.queues));
collect_resources(c, NULL, &(clusterconf.reslist.count),
&(clusterconf.reslist.res));
collect_workers(c, (collect_check_fn_t)check_worker_,
&(clusterconf.wlist.count), &(clusterconf.wlist.workers));
xlist_init(&clist, 256);
xlist_init(&qlist, 64);
xlist_init(&rlist, 1024);
xlist_init(&wlist, 10240);
collect_confvars(c, NULL, &clist);
clusterconf.cfglist.count = clist.count;
clusterconf.cfglist.configs = (xce_config_t**)clist.data;
collect_queues(c, NULL, &qlist);
clusterconf.qlist.count = qlist.count;
clusterconf.qlist.queues = (xce_queue_t**)qlist.data;
collect_resources(c, NULL, &rlist);
clusterconf.reslist.count = rlist.count;
clusterconf.reslist.res = (xce_resource_t**)rlist.data;
collect_workers(c, (collect_check_fn_t)check_worker_, &wlist);
clusterconf.wlist.count = wlist.count;
clusterconf.wlist.workers = (xce_worker_t**)wlist.data;
xce_reply(ep, c->myhost, &reply);
@ -53,15 +66,13 @@ int handle_clusterconf(cluster_t* c, endpoint_t* ep, xce_request_t* request)
free_resval_with_idx_list(&(w->resvals_to_sched), w->nresvals_to_sched);
}
deref_objs(clusterconf.cfglist.count, (void**)clusterconf.cfglist.configs);
deref_objs(clusterconf.qlist.count, (void**)clusterconf.qlist.queues);
deref_objs(clusterconf.reslist.count, (void**)clusterconf.reslist.res);
deref_objs(clusterconf.wlist.count, (void**)clusterconf.wlist.workers);
unlock_collect_queues(&qlist);
unlock_collect_workers(&wlist);
FREEUP(clusterconf.cfglist.configs);
FREEUP(clusterconf.qlist.queues);
FREEUP(clusterconf.reslist.res);
FREEUP(clusterconf.wlist.workers);
xlist_fini(&clist);
xlist_fini(&qlist);
xlist_fini(&rlist);
xlist_fini(&wlist);
return rc;
}