From 9648be1f022bd51fef5b240faca4e3455ac1368c Mon Sep 17 00:00:00 2001 From: eeff <33566201+eeff@users.noreply.github.com> Date: Fri, 17 Mar 2023 10:16:24 +0800 Subject: [PATCH] feat(core): fulfill del template request --- src/core/manager.c | 19 +++++++++++++++++++ src/core/manager_internal.c | 10 ++++++++++ src/core/manager_internal.h | 6 ++++-- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/core/manager.c b/src/core/manager.c index d9c11840..4c173134 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -326,6 +326,25 @@ static int manager_loop(enum neu_event_io_type type, int fd, void *usr_data) reply(manager, header, &e); break; } + case NEU_REQ_DEL_TEMPLATE: { + neu_resp_error_t e = { 0 }; + neu_req_del_template_t *cmd = (neu_req_del_template_t *) &header[1]; + + if (strlen(cmd->name) > 0) { + e.error = neu_manager_del_template(manager, cmd->name); + } else { + neu_manager_clear_template(manager); + } + + if (NEU_ERR_SUCCESS == e.error) { + // TODO: storage + } + + header->type = NEU_RESP_ERROR; + strcpy(header->receiver, header->sender); + reply(manager, header, &e); + break; + } case NEU_REQ_ADD_NODE: { neu_req_add_node_t *cmd = (neu_req_add_node_t *) &header[1]; int error = diff --git a/src/core/manager_internal.c b/src/core/manager_internal.c index 6a386b2f..d4af84bb 100644 --- a/src/core/manager_internal.c +++ b/src/core/manager_internal.c @@ -135,6 +135,16 @@ error: return rv; } +int neu_manager_del_template(neu_manager_t *manager, const char *name) +{ + return neu_template_manager_del(manager->template_manager, name); +} + +void neu_manager_clear_template(neu_manager_t *manager) +{ + return neu_template_manager_clear(manager->template_manager); +} + UT_array *neu_manager_get_driver_group(neu_manager_t *manager) { UT_array *drivers = diff --git a/src/core/manager_internal.h b/src/core/manager_internal.h index 266132c3..702631c0 100644 --- a/src/core/manager_internal.h +++ b/src/core/manager_internal.h @@ -57,8 +57,10 @@ int neu_manager_del_node(neu_manager_t *manager, const char *node_name); UT_array *neu_manager_get_nodes(neu_manager_t *manager, neu_node_type_e type, const char *plugin, const char *node); -int neu_manager_add_template(neu_manager_t * manager, - neu_req_add_template_t *req); +int neu_manager_add_template(neu_manager_t * manager, + neu_req_add_template_t *req); +int neu_manager_del_template(neu_manager_t *manager, const char *name); +void neu_manager_clear_template(neu_manager_t *manager); UT_array *neu_manager_get_driver_group(neu_manager_t *manager);