feat(core): manager fulfill update template tags requests

This commit is contained in:
eeff
2023-04-14 15:18:12 +08:00
parent fec281e89c
commit 0ef5e5993e
3 changed files with 53 additions and 0 deletions
+19
View File
@@ -397,6 +397,24 @@ static int manager_loop(enum neu_event_io_type type, int fd, void *usr_data)
reply(manager, header, &resp);
break;
}
case NEU_REQ_UPDATE_TEMPLATE_TAG: {
neu_req_update_template_tag_t *cmd =
(neu_req_update_template_tag_t *) &header[1];
neu_resp_update_tag_t resp = { 0 };
resp.error =
neu_manager_update_template_tags(manager, cmd, &resp.index);
if (resp.index > 0) {
// TODO: storage
}
neu_req_update_template_tag_fini(cmd);
header->type = NEU_RESP_UPDATE_TEMPLATE_TAG;
strcpy(header->receiver, header->sender);
reply(manager, header, &resp);
break;
}
case NEU_REQ_ADD_NODE: {
neu_req_add_node_t *cmd = (neu_req_add_node_t *) &header[1];
int error =
@@ -704,6 +722,7 @@ static int manager_loop(enum neu_event_io_type type, int fd, void *usr_data)
case NEU_RESP_ADD_TAG:
case NEU_RESP_ADD_TEMPLATE_TAG:
case NEU_RESP_UPDATE_TAG:
case NEU_RESP_UPDATE_TEMPLATE_TAG:
case NEU_RESP_GET_TAG:
case NEU_RESP_GET_GROUP:
case NEU_RESP_GET_NODE_SETTING:
+31
View File
@@ -260,6 +260,37 @@ int neu_manager_add_template_tags(neu_manager_t * manager,
return ret;
}
int neu_manager_update_template_tags(neu_manager_t * manager,
neu_req_update_template_tag_t *req,
uint16_t * index_p)
{
int ret = 0;
neu_template_t *tmpl =
neu_template_manager_find(manager->template_manager, req->tmpl);
if (NULL == tmpl) {
return NEU_ERR_TEMPLATE_NOT_FOUND;
}
neu_group_t *grp = neu_template_get_group(tmpl, req->group);
if (NULL == grp) {
return NEU_ERR_GROUP_NOT_EXIST;
}
int i = 0;
for (; i < req->n_tag; ++i) {
if (0 != (ret = neu_group_update_tag(grp, &req->tags[i]))) {
break;
}
}
if (index_p) {
*index_p = i;
}
return ret;
}
UT_array *neu_manager_get_driver_group(neu_manager_t *manager)
{
UT_array *drivers =
+3
View File
@@ -68,6 +68,9 @@ int neu_manager_get_templates(neu_manager_t * manager,
int neu_manager_add_template_tags(neu_manager_t * manager,
neu_req_add_template_tag_t *req,
uint16_t * index_p);
int neu_manager_update_template_tags(neu_manager_t * manager,
neu_req_add_template_tag_t *req,
uint16_t * index_p);
UT_array *neu_manager_get_driver_group(neu_manager_t *manager);