mirror of
https://github.com/emqx/neuron.git
synced 2026-10-18 13:41:22 +08:00
Merge pull request #857 from fengzeroz/main
modify api of get nodes & fix connection recv
This commit is contained in:
@@ -214,6 +214,8 @@ typedef struct neu_req_del_node {
|
||||
|
||||
typedef struct neu_req_get_node {
|
||||
neu_node_type_e type;
|
||||
char plugin[NEU_PLUGIN_NAME_LEN];
|
||||
char node[NEU_NODE_NAME_LEN];
|
||||
} neu_req_get_node_t;
|
||||
|
||||
typedef struct neu_resp_node_info {
|
||||
|
||||
@@ -86,7 +86,10 @@ void handle_del_adapter(nng_aio *aio)
|
||||
|
||||
void handle_get_adapter(nng_aio *aio)
|
||||
{
|
||||
int ret = 0;
|
||||
int ret = 0;
|
||||
char plugin_name[NEU_PLUGIN_NAME_LEN] = { 0 };
|
||||
char node_name[NEU_NODE_NAME_LEN] = { 0 };
|
||||
|
||||
neu_plugin_t * plugin = neu_rest_get_plugin();
|
||||
neu_node_type_e node_type = { 0 };
|
||||
neu_req_get_node_t cmd = { 0 };
|
||||
@@ -104,6 +107,15 @@ void handle_get_adapter(nng_aio *aio)
|
||||
return;
|
||||
}
|
||||
|
||||
if (http_get_param_str(aio, "plugin", plugin_name, sizeof(plugin_name)) ==
|
||||
0) {
|
||||
strcpy(cmd.plugin, plugin_name);
|
||||
}
|
||||
|
||||
if (http_get_param_str(aio, "node", node_name, sizeof(node_name)) == 0) {
|
||||
strcpy(cmd.node, node_name);
|
||||
}
|
||||
|
||||
cmd.type = node_type;
|
||||
ret = neu_plugin_op(plugin, header, &cmd);
|
||||
if (ret != 0) {
|
||||
|
||||
@@ -101,6 +101,9 @@ struct neu_rest_handler cors_handler[] = {
|
||||
{
|
||||
.url = "/api/v2/version",
|
||||
},
|
||||
{
|
||||
.url = "/api/v2/password",
|
||||
},
|
||||
};
|
||||
|
||||
struct neu_rest_handler api_handlers[] = {
|
||||
|
||||
@@ -350,7 +350,7 @@ ssize_t neu_conn_recv(neu_conn_t *conn, uint8_t *buf, ssize_t len)
|
||||
conn->fd, len, ret, strerror(errno), errno);
|
||||
}
|
||||
|
||||
if (errno == EPIPE || ret <= 0) {
|
||||
if (errno == EPIPE || ret == -1) {
|
||||
conn_disconnect(conn);
|
||||
}
|
||||
|
||||
|
||||
+4
-3
@@ -348,9 +348,10 @@ static int manager_loop(enum neu_event_io_type type, int fd, void *usr_data)
|
||||
break;
|
||||
}
|
||||
case NEU_REQ_GET_NODE: {
|
||||
neu_req_get_node_t *cmd = (neu_req_get_node_t *) &header[1];
|
||||
UT_array * nodes = neu_manager_get_nodes(manager, cmd->type);
|
||||
neu_resp_get_node_t resp = { .nodes = nodes };
|
||||
neu_req_get_node_t *cmd = (neu_req_get_node_t *) &header[1];
|
||||
UT_array * nodes =
|
||||
neu_manager_get_nodes(manager, cmd->type, cmd->plugin, cmd->node);
|
||||
neu_resp_get_node_t resp = { .nodes = nodes };
|
||||
|
||||
header->type = NEU_RESP_GET_NODE;
|
||||
strcpy(header->receiver, header->sender);
|
||||
|
||||
@@ -116,9 +116,10 @@ int neu_manager_del_node(neu_manager_t *manager, const char *node_name)
|
||||
return NEU_ERR_SUCCESS;
|
||||
}
|
||||
|
||||
UT_array *neu_manager_get_nodes(neu_manager_t *manager, neu_node_type_e type)
|
||||
UT_array *neu_manager_get_nodes(neu_manager_t *manager, neu_node_type_e type,
|
||||
const char *plugin, const char *node)
|
||||
{
|
||||
return neu_node_manager_get(manager->node_manager, type);
|
||||
return neu_node_manager_filter(manager->node_manager, type, plugin, node);
|
||||
}
|
||||
|
||||
UT_array *neu_manager_get_driver_group(neu_manager_t *manager)
|
||||
|
||||
@@ -50,7 +50,8 @@ UT_array *neu_manager_get_plugins(neu_manager_t *manager);
|
||||
int neu_manager_add_node(neu_manager_t *manager, const char *node_name,
|
||||
const char *plugin_name, bool start);
|
||||
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);
|
||||
UT_array *neu_manager_get_nodes(neu_manager_t *manager, neu_node_type_e type,
|
||||
const char *plugin, const char *node);
|
||||
|
||||
UT_array *neu_manager_get_driver_group(neu_manager_t *manager);
|
||||
|
||||
|
||||
@@ -170,6 +170,38 @@ UT_array *neu_node_manager_get(neu_node_manager_t *mgr, neu_node_type_e type)
|
||||
return array;
|
||||
}
|
||||
|
||||
UT_array *neu_node_manager_filter(neu_node_manager_t *mgr, neu_node_type_e type,
|
||||
const char *plugin, const char *node)
|
||||
{
|
||||
UT_array * array = NULL;
|
||||
UT_icd icd = { sizeof(neu_resp_node_info_t), NULL, NULL, NULL };
|
||||
node_entity_t *el = NULL, *tmp = NULL;
|
||||
|
||||
utarray_new(array, &icd);
|
||||
|
||||
HASH_ITER(hh, mgr->nodes, el, tmp)
|
||||
{
|
||||
if (!el->is_static && el->display) {
|
||||
if (el->adapter->module->type == type) {
|
||||
if (strlen(plugin) > 0 &&
|
||||
strcmp(el->adapter->module->module_name, plugin) != 0) {
|
||||
continue;
|
||||
}
|
||||
if (strlen(node) > 0 &&
|
||||
strstr(el->adapter->name, node) == NULL) {
|
||||
continue;
|
||||
}
|
||||
neu_resp_node_info_t info = { 0 };
|
||||
strcpy(info.node, el->adapter->name);
|
||||
strcpy(info.plugin, el->adapter->module->module_name);
|
||||
utarray_push_back(array, &info);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return array;
|
||||
}
|
||||
|
||||
UT_array *neu_node_manager_get_all(neu_node_manager_t *mgr)
|
||||
{
|
||||
UT_array * array = NULL;
|
||||
|
||||
@@ -45,6 +45,8 @@ uint16_t neu_node_manager_size(neu_node_manager_t *mgr);
|
||||
|
||||
// neu_resp_node_info array
|
||||
UT_array *neu_node_manager_get(neu_node_manager_t *mgr, neu_node_type_e type);
|
||||
UT_array *neu_node_manager_filter(neu_node_manager_t *mgr, neu_node_type_e type,
|
||||
const char *plugin, const char *node);
|
||||
UT_array *neu_node_manager_get_all(neu_node_manager_t *mgr);
|
||||
|
||||
// neu_adapter_t array
|
||||
|
||||
Reference in New Issue
Block a user