feat(core): fulfill add template request

This commit is contained in:
eeff
2023-03-16 18:20:56 +08:00
parent 8c395199f9
commit 7013d57914
3 changed files with 51 additions and 0 deletions
+15
View File
@@ -311,6 +311,21 @@ static int manager_loop(enum neu_event_io_type type, int fd, void *usr_data)
reply(manager, header, &resp);
break;
}
case NEU_REQ_ADD_TEMPLATE: {
neu_resp_error_t e = { 0 };
neu_req_add_template_t *cmd = (neu_req_add_template_t *) &header[1];
e.error = neu_manager_add_template(manager, cmd);
if (NEU_ERR_SUCCESS == e.error) {
// TODO: storage
}
neu_reqresp_template_fini(cmd);
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 =
+33
View File
@@ -25,6 +25,7 @@
#include "adapter/driver/driver_internal.h"
#include "manager_internal.h"
#include "template_manager.h"
int neu_manager_add_plugin(neu_manager_t *manager, const char *library)
{
@@ -102,6 +103,38 @@ UT_array *neu_manager_get_nodes(neu_manager_t *manager, neu_node_type_e type,
return neu_node_manager_filter(manager->node_manager, type, plugin, node);
}
int neu_manager_add_template(neu_manager_t * manager,
neu_req_add_template_t *req)
{
int rv = 0;
neu_template_t *tmpl = neu_template_new(req->name, req->plugin);
if (NULL == tmpl) {
return NEU_ERR_EINTERNAL;
}
for (int i = 0; i < req->n_group; ++i) {
neu_reqresp_template_group_t *grp = &req->groups[i];
if (0 !=
(rv = neu_template_add_group(tmpl, grp->name, grp->interval))) {
goto error;
}
for (int j = 0; j < grp->n_tag; ++j) {
if (0 !=
(rv = neu_template_add_tag(tmpl, grp->name, &grp->tags[j]))) {
goto error;
}
}
}
rv = neu_template_manager_add(manager->template_manager, tmpl);
return rv;
error:
neu_template_free(tmpl);
return rv;
}
UT_array *neu_manager_get_driver_group(neu_manager_t *manager)
{
UT_array *drivers =
+3
View File
@@ -57,6 +57,9 @@ 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);
UT_array *neu_manager_get_driver_group(neu_manager_t *manager);
int neu_manager_subscribe(neu_manager_t *manager, const char *app,