refactor check tag

This commit is contained in:
fengzero
2026-06-12 03:35:41 +00:00
parent c51897413b
commit fa21dcaa1f
4 changed files with 26 additions and 75 deletions
-9
View File
@@ -46,15 +46,6 @@ void handle_add_tags(nng_aio *aio)
header.otel_trace_type = NEU_OTEL_TRACE_TYPE_REST_COMM;
neu_resp_add_tag_t add_resp = { 0 };
for (int i = 0; i < req->n_tag; i++) {
for (int k = 0; k < i; k++) {
if (strcmp(req->tags[i].name, req->tags[k].name) == 0) {
neu_resp_add_tag_result(&add_resp, i,
NEU_ERR_TAG_NAME_CONFLICT);
}
}
}
for (int i = 0; i < req->n_tag; i++) {
if (req->tags[i].type == NEU_TYPE_STRING ||
req->tags[i].type == NEU_TYPE_BOOL ||
+19 -55
View File
@@ -1569,18 +1569,27 @@ static int adapter_loop(enum neu_event_io_type type, int fd, void *usr_data)
break;
}
case NEU_REQ_ADD_TAG: {
neu_req_add_tag_t *cmd = (neu_req_add_tag_t *) &header[1];
neu_resp_add_tag_t resp = { 0 };
uint16_t added_count = 0;
neu_req_add_tag_t *cmd = (neu_req_add_tag_t *) &header[1];
neu_resp_add_tag_t resp = { 0 };
if (adapter->module->type == NEU_NA_TYPE_DRIVER) {
for (int i = 0; i < cmd->n_tag; i++) {
for (int k = 0; k < i; k++) {
if (strcmp(cmd->tags[i].name, cmd->tags[k].name) == 0) {
neu_resp_add_tag_result(&resp, i,
NEU_ERR_TAG_NAME_CONFLICT);
}
}
int ret = neu_adapter_driver_validate_tag(
(neu_adapter_driver_t *) adapter, cmd->group,
&cmd->tags[i]);
if (ret == 0) {
added_count += 1;
} else {
if (ret != 0) {
neu_resp_add_tag_result(&resp, i, ret);
}
ret = neu_adapter_driver_check_tag(
(neu_adapter_driver_t *) adapter, cmd->group,
&cmd->tags[i]);
if (ret != 0) {
neu_resp_add_tag_result(&resp, i, ret);
}
}
@@ -1589,47 +1598,14 @@ static int adapter_loop(enum neu_event_io_type type, int fd, void *usr_data)
neu_resp_add_tag_result(&resp, 0, NEU_ERR_GROUP_NOT_ALLOW);
}
resp.index = added_count;
if (resp.results != NULL && utarray_len(resp.results) > 0) {
neu_resp_tag_op_result_t *first =
(neu_resp_tag_op_result_t *) utarray_eltptr(resp.results, 0);
resp.error = first->error;
for (uint16_t i = 0; i < cmd->n_tag; i++) {
neu_tag_fini(&cmd->tags[i]);
}
neu_msg_exchange(header);
header->type = NEU_RESP_ADD_TAG;
free(cmd->tags);
reply(adapter, header, &resp);
break;
}
resp.error =
neu_adapter_driver_check_tags((neu_adapter_driver_t *) adapter,
cmd->group, cmd->tags, cmd->n_tag);
if (resp.error != 0) {
for (uint16_t i = 0; i < cmd->n_tag; i++) {
neu_tag_fini(&cmd->tags[i]);
}
neu_msg_exchange(header);
resp.index = resp.error - 1;
resp.error = NEU_ERR_TAG_NAME_CONFLICT;
neu_resp_add_tag_result(&resp, resp.index, resp.error);
header->type = NEU_RESP_ADD_TAG;
free(cmd->tags);
reply(adapter, header, &resp);
break;
}
resp.error =
neu_adapter_driver_try_add_tag((neu_adapter_driver_t *) adapter,
cmd->group, cmd->tags, cmd->n_tag);
if (resp.error != 0) {
if (resp.error != 0 || utarray_len(resp.results) > 0) {
for (uint16_t i = 0; i < cmd->n_tag; i++) {
neu_tag_fini(&cmd->tags[i]);
}
resp.index = 0;
neu_resp_add_tag_result(&resp, 0, resp.error);
neu_msg_exchange(header);
header->type = NEU_RESP_ADD_TAG;
free(cmd->tags);
@@ -1637,24 +1613,12 @@ static int adapter_loop(enum neu_event_io_type type, int fd, void *usr_data)
break;
}
added_count = 0;
for (int i = 0; i < cmd->n_tag; i++) {
int ret = neu_adapter_driver_add_tag(
(neu_adapter_driver_t *) adapter, cmd->group, &cmd->tags[i],
NEU_DEFAULT_GROUP_INTERVAL);
if (ret != 0) {
neu_adapter_driver_try_del_tag((neu_adapter_driver_t *) adapter,
cmd->n_tag - i);
added_count = i;
resp.error = ret;
neu_resp_add_tag_result(&resp, i, ret);
break;
}
added_count += 1;
neu_adapter_driver_add_tag((neu_adapter_driver_t *) adapter,
cmd->group, &cmd->tags[i],
NEU_DEFAULT_GROUP_INTERVAL);
}
resp.index = added_count;
for (uint16_t i = resp.index; i < cmd->n_tag; i++) {
neu_tag_fini(&cmd->tags[i]);
}
+5 -8
View File
@@ -2232,9 +2232,8 @@ int neu_adapter_driver_validate_tag(neu_adapter_driver_t *driver,
return NEU_ERR_SUCCESS;
}
int neu_adapter_driver_check_tags(neu_adapter_driver_t *driver,
const char *group, neu_datatag_t *tags,
int n_tag)
int neu_adapter_driver_check_tag(neu_adapter_driver_t *driver,
const char *group, neu_datatag_t *tag)
{
int ret = NEU_ERR_SUCCESS;
group_t *find = NULL;
@@ -2243,11 +2242,9 @@ int neu_adapter_driver_check_tags(neu_adapter_driver_t *driver,
return ret;
}
for (int i = 0; i < n_tag; i++) {
ret = neu_group_check_name(find->group, tags[i].name);
if (ret != NEU_ERR_SUCCESS) {
return i + 1;
}
ret = neu_group_check_name(find->group, tag->name);
if (ret != NEU_ERR_SUCCESS) {
return NEU_ERR_TAG_NAME_CONFLICT;
}
return ret;
+2 -3
View File
@@ -72,9 +72,8 @@ int neu_adapter_driver_load_tag(neu_adapter_driver_t *driver, const char *group,
int neu_adapter_driver_validate_tag(neu_adapter_driver_t *driver,
const char *group, neu_datatag_t *tag);
int neu_adapter_driver_check_tags(neu_adapter_driver_t *driver,
const char *group, neu_datatag_t *tags,
int n_tag);
int neu_adapter_driver_check_tag(neu_adapter_driver_t *driver,
const char *group, neu_datatag_t *tag);
int neu_adapter_driver_add_tag(neu_adapter_driver_t *driver, const char *group,
neu_datatag_t *tag, uint16_t interval);
int neu_adapter_driver_del_tag(neu_adapter_driver_t *driver, const char *group,