summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author刘学利 <[email protected]>2022-05-16 08:54:36 +0000
committer刘学利 <[email protected]>2022-05-16 08:54:36 +0000
commit89deb48c319a2ba5cec08d2229ac155ef2884f4c (patch)
treee9d4bbfeb373d9428246ffd8def3d823115bf4bc
parent0c181467c297e2b6f872ec65944547ed07794a88 (diff)
TLD_array_append支持添加数组到rapidjsonv5.6.3
-rw-r--r--inc/tsg_send_log.h3
-rw-r--r--src/tsg_send_log.cpp34
2 files changed, 37 insertions, 0 deletions
diff --git a/inc/tsg_send_log.h b/inc/tsg_send_log.h
index b9703a0..e0f3abf 100644
--- a/inc/tsg_send_log.h
+++ b/inc/tsg_send_log.h
@@ -38,6 +38,9 @@ int TLD_append(struct TLD_handle_t *handle, char *key, void *value, TLD_TYPE typ
int TLD_append_streaminfo(struct tsg_log_instance_t *instance, struct TLD_handle_t *handle, struct streaminfo *a_stream);
int TLD_cancel(struct TLD_handle_t *handle);
struct TLD_handle_t *TLD_duplicate(struct TLD_handle_t *handle);
+//type only TLD_TYPE_LONG/TLD_TYPE_STRING
+int TLD_array_append(struct TLD_handle_t *handle, char *key, void **array, int array_num, TLD_TYPE type);
+
int tsg_send_log(struct tsg_log_instance_t *instance, struct TLD_handle_t *handle, tsg_log_t *log_msg, int thread_id);
diff --git a/src/tsg_send_log.cpp b/src/tsg_send_log.cpp
index 9e5b0c6..59ad2e1 100644
--- a/src/tsg_send_log.cpp
+++ b/src/tsg_send_log.cpp
@@ -966,6 +966,40 @@ int TLD_append(struct TLD_handle_t *handle, char *key, void *value, TLD_TYPE typ
return 0;
}
+int TLD_array_append(struct TLD_handle_t *handle, char *key, void **array, int array_num, TLD_TYPE type)
+{
+ if(handle==NULL || key==NULL || array_num<=0 || array==NULL || type!=TLD_TYPE_LONG || type!=TLD_TYPE_STRING)
+ {
+ return -1;
+ }
+
+ int i=0;
+ Value obj_array(kArrayType);
+
+ switch(type)
+ {
+ case TLD_TYPE_LONG:
+ for(i=0; i<array_num; i++)
+ {
+ obj_array.PushBack((long)(array[i]), handle->document->GetAllocator());
+ }
+ break;
+ case TLD_TYPE_STRING:
+ for(i=0; i<array_num; i++)
+ {
+ Value str_value(StringRef((char *)(array[i]), strlen((char *)array[i])));
+ obj_array.PushBack(str_value, handle->document->GetAllocator());
+ }
+ break;
+ default:
+ return -1;
+ }
+
+ add_object_member(handle, handle->document, key, obj_array);
+
+ return 1;
+}
+
struct TLD_handle_t *TLD_duplicate(struct TLD_handle_t *handle)
{
if (handle == NULL)