From 6d1968476ded8d1310f86e0d4f9d0b4f68db4257 Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Fri, 20 Aug 2021 15:44:43 +0800 Subject: [PATCH] [TD-5992] add set config interface for connector --- src/client/CMakeLists.txt | 12 ++++++++---- src/client/src/tscSystem.c | 35 +++++++++++++++++++++++++++++++++ src/util/inc/tconfig.h | 1 + src/util/src/tconfig.c | 40 ++------------------------------------ 4 files changed, 46 insertions(+), 42 deletions(-) diff --git a/src/client/CMakeLists.txt b/src/client/CMakeLists.txt index 2f83557d63..04368d64ba 100644 --- a/src/client/CMakeLists.txt +++ b/src/client/CMakeLists.txt @@ -8,10 +8,11 @@ AUX_SOURCE_DIRECTORY(src SRC) IF (TD_LINUX) INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/deps/jni/linux) + INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/deps/cJson/inc) # set the static lib name ADD_LIBRARY(taos_static STATIC ${SRC}) - TARGET_LINK_LIBRARIES(taos_static common query trpc tutil pthread m rt ${VAR_TSZ}) + TARGET_LINK_LIBRARIES(taos_static common query trpc tutil pthread cJson m rt ${VAR_TSZ}) SET_TARGET_PROPERTIES(taos_static PROPERTIES OUTPUT_NAME "taos_static") SET_TARGET_PROPERTIES(taos_static PROPERTIES CLEAN_DIRECT_OUTPUT 1) @@ -34,10 +35,11 @@ IF (TD_LINUX) ELSEIF (TD_DARWIN) INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/deps/jni/linux) + INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/deps/cJson/inc) # set the static lib name ADD_LIBRARY(taos_static STATIC ${SRC}) - TARGET_LINK_LIBRARIES(taos_static common query trpc tutil pthread m lua) + TARGET_LINK_LIBRARIES(taos_static common query trpc tutil pthread m lua cJson) SET_TARGET_PROPERTIES(taos_static PROPERTIES OUTPUT_NAME "taos_static") SET_TARGET_PROPERTIES(taos_static PROPERTIES CLEAN_DIRECT_OUTPUT 1) @@ -57,11 +59,12 @@ ELSEIF (TD_DARWIN) ELSEIF (TD_WINDOWS) INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/deps/jni/windows) INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/deps/jni/windows/win32) + INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/deps/cJson/inc) CONFIGURE_FILE("${TD_COMMUNITY_DIR}/src/client/src/taos.rc.in" "${TD_COMMUNITY_DIR}/src/client/src/taos.rc") ADD_LIBRARY(taos_static STATIC ${SRC}) - TARGET_LINK_LIBRARIES(taos_static trpc tutil query) + TARGET_LINK_LIBRARIES(taos_static trpc tutil cJson query) # generate dynamic library (*.dll) ADD_LIBRARY(taos SHARED ${SRC} ${TD_COMMUNITY_DIR}/src/client/src/taos.rc) @@ -73,9 +76,10 @@ ELSEIF (TD_WINDOWS) ELSEIF (TD_DARWIN) SET(CMAKE_MACOSX_RPATH 1) INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/deps/jni/linux) + INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/deps/cJson/inc) ADD_LIBRARY(taos_static STATIC ${SRC}) - TARGET_LINK_LIBRARIES(taos_static query trpc tutil pthread m lua) + TARGET_LINK_LIBRARIES(taos_static query trpc tutil pthread cJson m lua) SET_TARGET_PROPERTIES(taos_static PROPERTIES OUTPUT_NAME "taos_static") # generate dynamic library (*.dylib) diff --git a/src/client/src/tscSystem.c b/src/client/src/tscSystem.c index c04765b065..f7e0979bdd 100644 --- a/src/client/src/tscSystem.c +++ b/src/client/src/tscSystem.c @@ -120,6 +120,41 @@ int32_t tscAcquireRpc(const char *key, const char *user, const char *secretEncry return 0; } +#include "cJSON.h" +static pthread_mutex_t setConfMutex = PTHREAD_MUTEX_INITIALIZER; +static bool setConfFlag = false; +int taos_set_config(const char *config){ + if(taos_init() == false){ + tscError("failed to call taos_init"); + return -1; + } + + pthread_mutex_lock(&setConfMutex); + + if (setConfFlag) { + tscError("already set config"); + return 0; + } + cJSON *root = cJSON_Parse(config); + if (root == NULL) { + tscError("failed to set config, invalid json format: %s", config); + return -1; + } + + int size = cJSON_GetArraySize(root); + for(int i = 0; i < size; i++){ + cJSON *item = cJSON_GetArrayItem(root, i); + if (!item) { + tscError("failed to read index:%d", i); + continue; + } + taosReadConfigOption(item->string, item->valuestring, NULL, NULL); + } + setConfFlag = true; + pthread_mutex_unlock(&setConfMutex); + return 0; +} + void taos_init_imp(void) { char temp[128] = {0}; diff --git a/src/util/inc/tconfig.h b/src/util/inc/tconfig.h index d03ce6e0f1..3b90bd22b4 100644 --- a/src/util/inc/tconfig.h +++ b/src/util/inc/tconfig.h @@ -89,6 +89,7 @@ void taosDumpGlobalCfg(); void taosInitConfigOption(SGlobalCfg cfg); SGlobalCfg * taosGetConfigOption(const char *option); +void taosReadConfigOption(const char *option, char *value, char *value2, char *value3); #ifdef __cplusplus } diff --git a/src/util/src/tconfig.c b/src/util/src/tconfig.c index ad7e90a4bd..8923bdeddf 100644 --- a/src/util/src/tconfig.c +++ b/src/util/src/tconfig.c @@ -258,7 +258,7 @@ SGlobalCfg *taosGetConfigOption(const char *option) { return NULL; } -static void taosReadConfigOption(const char *option, char *value, char *value2, char *value3) { +void taosReadConfigOption(const char *option, char *value, char *value2, char *value3) { for (int i = 0; i < tsGlobalConfigNum; ++i) { SGlobalCfg *cfg = tsGlobalConfig + i; if (!(cfg->cfgType & TSDB_CFG_CTYPE_B_CONFIG)) continue; @@ -560,40 +560,4 @@ void taosDumpGlobalCfg() { taosDumpCfg(cfg); } -} - - -#include "cJSON.h" -static pthread_mutex_t setConfMutex = PTHREAD_MUTEX_INITIALIZER; -static bool setConfFlag = false; -int taos_set_config(const char *config){ - if(taos_init() == false){ - uError("failed to call taos_init"); - return -1; - } - - pthread_mutex_lock(&setConfMutex); - - if (setConfFlag) { - uError("already set config"); - return 0; - } - cJSON *root = cJSON_Parse(config); - if (root == NULL) { - uError("failed to set config, invalid json format: %s", config); - return -1; - } - - int size = cJSON_GetArraySize(root); - for(int i = 0; i < size; i++){ - cJSON *item = cJSON_GetArrayItem(root, i); - if (!item) { - uError("failed to read index:%d", i); - continue; - } - taosReadConfigOption(item->string, item->valuestring, NULL, NULL); - } - setConfFlag = true; - pthread_mutex_unlock(&setConfMutex); - return 0; -} +} \ No newline at end of file -- GitLab