feat(core): manager fulfill del template tags requests

This commit is contained in:
eeff
2023-04-14 16:48:25 +08:00
parent a863214e9b
commit 0e2d11322a
4 changed files with 52 additions and 0 deletions
+9
View File
@@ -529,6 +529,15 @@ typedef struct {
char ** tags;
} neu_req_del_template_tag_t;
static inline void
neu_req_del_template_tag_fini(neu_req_del_template_tag_t *req)
{
for (uint16_t i = 0; i < req->n_tag; ++i) {
free(req->tags[i]);
}
free(req->tags);
}
typedef struct neu_req_get_template_tag {
char tmpl[NEU_TEMPLATE_NAME_LEN];
char group[NEU_GROUP_NAME_LEN];
+17
View File
@@ -415,6 +415,23 @@ static int manager_loop(enum neu_event_io_type type, int fd, void *usr_data)
reply(manager, header, &resp);
break;
}
case NEU_REQ_DEL_TEMPLATE_TAG: {
neu_req_del_template_tag_t *cmd =
(neu_req_del_template_tag_t *) &header[1];
neu_resp_error_t resp = { 0 };
resp.error = neu_manager_del_template_tags(manager, cmd);
if (0 == resp.error) {
// TODO: storage
}
neu_req_del_template_tag_fini(cmd);
header->type = NEU_RESP_ERROR;
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 =
+24
View File
@@ -291,6 +291,30 @@ int neu_manager_update_template_tags(neu_manager_t * manager,
return ret;
}
int neu_manager_del_template_tags(neu_manager_t * manager,
neu_req_del_template_tag_t *req)
{
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) {
// the only possible error is that the tag does not exist
// in which case we just ignore and continue
neu_group_del_tag(grp, req->tags[i]);
}
return 0;
}
UT_array *neu_manager_get_driver_group(neu_manager_t *manager)
{
UT_array *drivers =
+2
View File
@@ -71,6 +71,8 @@ int neu_manager_add_template_tags(neu_manager_t * manager,
int neu_manager_update_template_tags(neu_manager_t * manager,
neu_req_add_template_tag_t *req,
uint16_t * index_p);
int neu_manager_del_template_tags(neu_manager_t * manager,
neu_req_del_template_tag_t *req);
UT_array *neu_manager_get_driver_group(neu_manager_t *manager);