Merge pull request #857 from fengzeroz/main

modify api of get nodes & fix connection recv
This commit is contained in:
fengzeroz
2022-10-25 10:38:20 +08:00
committed by GitHub
9 changed files with 62 additions and 8 deletions
+2
View File
@@ -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 {
+13 -1
View File
@@ -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) {
+3
View File
@@ -101,6 +101,9 @@ struct neu_rest_handler cors_handler[] = {
{
.url = "/api/v2/version",
},
{
.url = "/api/v2/password",
},
};
struct neu_rest_handler api_handlers[] = {
+1 -1
View File
@@ -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
View File
@@ -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);
+3 -2
View File
@@ -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)
+2 -1
View File
@@ -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);
+32
View File
@@ -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;
+2
View File
@@ -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