mirror of
https://github.com/emqx/neuron.git
synced 2026-10-28 22:59:34 +08:00
Merge pull request #875 from fengzeroz/main
api: get tags filter by tag name
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user