mirror of
https://github.com/emqx/neuron.git
synced 2026-10-23 10:22:32 +08:00
feat(core): manager fulfill del template tags requests
This commit is contained in:
@@ -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];
|
||||
|
||||
@@ -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 =
|
||||
|
||||
@@ -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 =
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user