mirror of
https://github.com/emqx/neuron.git
synced 2026-10-21 08:45:47 +08:00
feat(core): fulfill add template request
This commit is contained in:
@@ -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 =
|
||||
|
||||
@@ -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 =
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user