diff --git a/src/tsg_send_log.cpp b/src/tsg_send_log.cpp index 56b0f83..c0aecc8 100644 --- a/src/tsg_send_log.cpp +++ b/src/tsg_send_log.cpp @@ -1334,19 +1334,13 @@ int set_shaping_rule_ids(struct tsg_log_instance_t *_instance, struct TLD_handle return 0; } - int offset=0; - char shaping_rule_ids[512]={0}; + Value shaping_rule_ids_array(kArrayType); for(int i=0; ishaping_result_num; i++) { - offset+=snprintf(shaping_rule_ids+offset, sizeof(shaping_rule_ids)-offset, "%d,", shaping_label->shaping_result[i].config_id); + shaping_rule_ids_array.PushBack(shaping_label->shaping_result[i].config_id, _handle->document->GetAllocator()); } - if(offset>0) - { - shaping_rule_ids[offset-1]='\0'; - TLD_append(_handle, _instance->id2field[LOG_COMMON_SHAPING_RULE_IDS].name, (void *)shaping_rule_ids, TLD_TYPE_STRING); - return 1; - } + TLD_append(_handle, _instance->id2field[LOG_COMMON_SHAPING_RULE_IDS].name, (void *) &shaping_rule_ids_array, TLD_TYPE_OBJECT); return 0; } diff --git a/test/src/gtest_master.cpp b/test/src/gtest_master.cpp index af24f7b..0a0a38c 100644 --- a/test/src/gtest_master.cpp +++ b/test/src/gtest_master.cpp @@ -69,7 +69,7 @@ TEST(TSGMaster, ShapingSetRuleIds) set_shaping_rule_ids(g_tsg_log_instance, handle, (struct streaminfo *)&a_stream); char shaping_rule_ids[256]={0}; TLD_convert_json(handle, shaping_rule_ids, sizeof(shaping_rule_ids)); - EXPECT_STREQ("{\"common_shaping_rule_ids\":\"32,33,34,35,36,37,38,39\"}", shaping_rule_ids); + EXPECT_STREQ("{\"common_shaping_rule_ids\":[32,33,34,35,36,37,38,39]}", shaping_rule_ids); struct notify_shaping_policy *shaping_label=(struct notify_shaping_policy *)stream_bridge_async_data_get(&a_stream, g_tsg_para.bridge[BRIDGE_TYPE_NOTIFY_SHAPING_RESULT].id); EXPECT_NE(nullptr, shaping_label);