Merge pull request #875 from fengzeroz/main

api: get tags filter by tag name
This commit is contained in:
fengzeroz
2022-10-31 14:45:09 +08:00
committed by GitHub
7 changed files with 55 additions and 8 deletions
+1
View File
@@ -289,6 +289,7 @@ typedef struct neu_req_del_tag {
typedef struct neu_req_get_tag {
char driver[NEU_NODE_NAME_LEN];
char group[NEU_GROUP_NAME_LEN];
char name[NEU_TAG_NAME_LEN];
} neu_req_get_tag_t;
typedef struct neu_resp_get_tag {
+11 -6
View File
@@ -161,12 +161,13 @@ void handle_update_tags_resp(nng_aio *aio, neu_resp_update_tag_t *resp)
void handle_get_tags(nng_aio *aio)
{
neu_plugin_t * plugin = neu_rest_get_plugin();
char node[NEU_NODE_NAME_LEN] = { 0 };
char group[NEU_GROUP_NAME_LEN] = { 0 };
int ret = 0;
neu_req_get_tag_t cmd = { 0 };
neu_reqresp_head_t header = {
neu_plugin_t * plugin = neu_rest_get_plugin();
char node[NEU_NODE_NAME_LEN] = { 0 };
char group[NEU_GROUP_NAME_LEN] = { 0 };
char tag_name[NEU_TAG_NAME_LEN] = { 0 };
int ret = 0;
neu_req_get_tag_t cmd = { 0 };
neu_reqresp_head_t header = {
.ctx = aio,
.type = NEU_REQ_GET_TAG,
};
@@ -186,6 +187,10 @@ void handle_get_tags(nng_aio *aio)
return;
}
if (http_get_param_str(aio, "name", tag_name, sizeof(tag_name)) >= 0) {
strcpy(cmd.name, tag_name);
}
strcpy(cmd.driver, node);
strcpy(cmd.group, group);
+2 -2
View File
@@ -501,8 +501,8 @@ static int adapter_loop(enum neu_event_io_type type, int fd, void *usr_data)
if (adapter->module->type != NEU_NA_TYPE_DRIVER) {
error.error = NEU_ERR_GROUP_NOT_ALLOW;
} else {
error.error = neu_adapter_driver_get_tag(
(neu_adapter_driver_t *) adapter, cmd->group, &tags);
error.error = neu_adapter_driver_query_tag(
(neu_adapter_driver_t *) adapter, cmd->group, cmd->name, &tags);
}
neu_msg_exchange(header);
+21
View File
@@ -648,6 +648,27 @@ int neu_adapter_driver_get_tag(neu_adapter_driver_t *driver, const char *group,
return ret;
}
int neu_adapter_driver_query_tag(neu_adapter_driver_t *driver,
const char *group, const char *name,
UT_array **tags)
{
int ret = NEU_ERR_SUCCESS;
group_t *find = NULL;
HASH_FIND_STR(driver->groups, group, find);
if (find != NULL) {
if (strlen(name) > 0) {
*tags = neu_group_query_tag(find->group, name);
} else {
*tags = neu_group_get_tag(find->group);
}
} else {
ret = NEU_ERR_GROUP_NOT_EXIST;
}
return ret;
}
void neu_adapter_driver_get_value_tag(neu_adapter_driver_t *driver,
const char *group, UT_array **tags)
{
+3
View File
@@ -54,6 +54,9 @@ int neu_adapter_driver_update_tag(neu_adapter_driver_t *driver,
const char *group, neu_datatag_t *tag);
int neu_adapter_driver_get_tag(neu_adapter_driver_t *driver, const char *group,
UT_array **tags);
int neu_adapter_driver_query_tag(neu_adapter_driver_t *driver,
const char *group, const char *name,
UT_array **tags);
void neu_adapter_driver_get_value_tag(neu_adapter_driver_t *driver,
const char *group, UT_array **tags);
UT_array *neu_adapter_driver_get_read_tag(neu_adapter_driver_t *driver,
+16
View File
@@ -193,6 +193,22 @@ UT_array *neu_group_get_tag(neu_group_t *group)
return array;
}
UT_array *neu_group_query_tag(neu_group_t *group, const char *name)
{
tag_elem_t *el = NULL, *tmp = NULL;
UT_array * array = NULL;
utarray_new(array, neu_tag_get_icd());
HASH_ITER(hh, group->tags, el, tmp)
{
if (strstr(el->tag->name, name) != NULL) {
utarray_push_back(array, el->tag);
}
}
return array;
}
UT_array *neu_group_get_read_tag(neu_group_t *group)
{
UT_array *array = NULL;
+1
View File
@@ -38,6 +38,7 @@ int neu_group_add_tag(neu_group_t *group, neu_datatag_t *tag);
int neu_group_update_tag(neu_group_t *group, neu_datatag_t *tag);
int neu_group_del_tag(neu_group_t *group, const char *tag_name);
UT_array * neu_group_get_tag(neu_group_t *group);
UT_array * neu_group_query_tag(neu_group_t *group, const char *name);
UT_array * neu_group_get_read_tag(neu_group_t *group);
uint16_t neu_group_tag_size(neu_group_t *group);
neu_datatag_t *neu_group_find_tag(neu_group_t *group, const char *tag);