From 309cd47aa3393c066e482409d46df85644887eca Mon Sep 17 00:00:00 2001 From: Alex Duan <417921451@qq.com> Date: Fri, 21 Mar 2025 13:11:46 +0800 Subject: [PATCH] fix: get default port rule --- tools/inc/pub.h | 6 ++++ tools/shell/src/shellEngine.c | 5 ++-- tools/shell/src/shellMain.c | 19 +------------ tools/src/pub.c | 47 ++++++++++++++++++++++++++++++++ tools/taos-tools/src/benchMain.c | 4 +-- tools/taos-tools/src/benchUtil.c | 3 +- tools/taos-tools/src/dumpUtil.c | 2 +- tools/taos-tools/src/taosdump.c | 20 +------------- 8 files changed, 63 insertions(+), 43 deletions(-) diff --git a/tools/inc/pub.h b/tools/inc/pub.h index 9fa8d0a142..fd9fa9558f 100644 --- a/tools/inc/pub.h +++ b/tools/inc/pub.h @@ -72,4 +72,10 @@ int8_t getConnMode(char *arg); char* strToLowerCopy(const char *str); int32_t parseDsn(char* dsn, char **host, char **port, char **user, char **pwd, char* error); +int32_t setConnMode(int8_t connMode, char *dsn); + +uint16_t defaultPort(int8_t connMode, char *dsn); + +int8_t defaultMode(int8_t connMode, char *dsn); + #endif // PUB_H_ \ No newline at end of file diff --git a/tools/shell/src/shellEngine.c b/tools/shell/src/shellEngine.c index 89d599997d..a0ec43a14c 100644 --- a/tools/shell/src/shellEngine.c +++ b/tools/shell/src/shellEngine.c @@ -21,6 +21,7 @@ #include "geosWrapper.h" #include "shellAuto.h" #include "shellInt.h" +#include "../../inc/pub.h" SShellObj shell = {0}; @@ -1347,7 +1348,7 @@ TAOS* createConnect(SShellArgs *pArgs) { if (pArgs->port_inputted) { port = pArgs->port; } else { - port = pArgs->connMode == CONN_MODE_NATIVE ? DEFAULT_PORT_NATIVE : DEFAULT_PORT_WS_LOCAL; + port = defaultPort(pArgs->connMode, pArgs->dsn); } sprintf(show, "host:%s port:%d ", host, port); @@ -1364,7 +1365,7 @@ TAOS* createConnect(SShellArgs *pArgs) { int32_t shellExecute(int argc, char *argv[]) { int32_t code = 0; printf(shell.info.clientVersion, shell.info.cusName, - shell.args.connMode == CONN_MODE_NATIVE ? STR_NATIVE : STR_WEBSOCKET, + defaultMode(shell.args.connMode, shell.args.dsn), taos_get_client_info(), shell.info.cusName); fflush(stdout); diff --git a/tools/shell/src/shellMain.c b/tools/shell/src/shellMain.c index 8f4b2c4448..fa03677824 100644 --- a/tools/shell/src/shellMain.c +++ b/tools/shell/src/shellMain.c @@ -54,23 +54,6 @@ void initArgument(SShellArgs *pArgs) { pArgs->port_inputted = false; } -// set conn mode -int32_t setConnMode(int8_t connMode) { - // default - if (connMode == CONN_MODE_INVALID) { - connMode = CONN_MODE_DEFAULT; - } - - // set conn mode - char * strMode = connMode == CONN_MODE_NATIVE ? STR_NATIVE : STR_WEBSOCKET; - int32_t code = taos_options(TSDB_OPTION_DRIVER, strMode); - if (code != TSDB_CODE_SUCCESS) { - fprintf(stderr, "failed to load driver since %s [0x%08X]\r\n", taos_errstr(NULL), taos_errno(NULL)); - return -1; - } - return 0; -} - int main(int argc, char *argv[]) { #if !defined(WINDOWS) taosSetSignal(SIGBUS, shellCrashHandler); @@ -118,7 +101,7 @@ int main(int argc, char *argv[]) { return -1; } - if (setConnMode(shell.args.connMode)) { + if (setConnMode(&shell.args.connMode, shell.args.dsn)) { return -1; } diff --git a/tools/src/pub.c b/tools/src/pub.c index 0e1cbdd654..0eddbfbe04 100644 --- a/tools/src/pub.c +++ b/tools/src/pub.c @@ -11,6 +11,7 @@ */ #include + #include #include "../inc/pub.h" @@ -88,4 +89,50 @@ exit(-1); } } + + // set conn mode +int32_t setConnMode(int8_t connMode, char *dsn) { + // check default + if (connMode == CONN_MODE_INVALID) { + if (dsn && dsn[0] != 0) { + connMode = CONN_MODE_WEBSOCKET; + } else { + // default + connMode = CONN_MODE_DEFAULT; + } + } + + // set conn mode + char * strMode = connMode == CONN_MODE_NATIVE ? STR_NATIVE : STR_WEBSOCKET; + int32_t code = taos_options(TSDB_OPTION_DRIVER, strMode); + if (code != TSDB_CODE_SUCCESS) { + fprintf(stderr, "failed to load driver. since %s [0x%08X]\r\n", taos_errstr(NULL), taos_errno(NULL)); + return code; + } + return 0; +} + +// default mode +int8_t defaultMode(int8_t connMode, char *dsn) { + int8_t mode = connMode; + if (connMode == CONN_MODE_INVALID) { + // no input from command line or config + if (dsn && dsn[0] != 0) { + mode = CONN_MODE_WEBSOCKET; + } else { + // default + mode = CONN_MODE_DEFAULT; + } + } + return mode; +} + +// get default port +uint16_t defaultPort(int8_t connMode, char *dsn) { + // consistent with setConnMode + int8_t mode = defaultMode(connMode, dsn); + + // default port + return mode == CONN_MODE_NATIVE ? DEFAULT_PORT_NATIVE : DEFAULT_PORT_WS_LOCAL; +} \ No newline at end of file diff --git a/tools/taos-tools/src/benchMain.c b/tools/taos-tools/src/benchMain.c index c2df571a22..9d3583c7a8 100644 --- a/tools/taos-tools/src/benchMain.c +++ b/tools/taos-tools/src/benchMain.c @@ -109,7 +109,7 @@ int32_t setConnMode(int8_t connMode) { int32_t code = taos_options(TSDB_OPTION_DRIVER, strMode); if (code != TSDB_CODE_SUCCESS) { engineError(INIT_PHASE, "taos_options", code); - return -1; + return code; } infoPrint("Connect mode is : %s\n\n", strMode); @@ -186,7 +186,7 @@ int main(int argc, char* argv[]) { } // conn mode - if (setConnMode(g_arguments->connMode) != 0) { + if (setConnMode(g_arguments->connMode, g_arguments->dsn) != 0) { exitLog(); return -1; } diff --git a/tools/taos-tools/src/benchUtil.c b/tools/taos-tools/src/benchUtil.c index 32bc5b0813..fe0ab3613b 100644 --- a/tools/taos-tools/src/benchUtil.c +++ b/tools/taos-tools/src/benchUtil.c @@ -13,6 +13,7 @@ #include #include #include "benchLog.h" +#include "pub.h" char resEncodingChunk[] = "Encoding: chunked"; char succMessage[] = "succ"; @@ -304,7 +305,7 @@ SBenchConn* initBenchConnImpl() { if (g_arguments->port_inputted) { port = g_arguments->port; } else { - port = g_arguments->connMode == CONN_MODE_NATIVE ? DEFAULT_PORT_NATIVE : DEFAULT_PORT_WS_LOCAL; + port = defaultPort(g_arguments->connMode, g_arguments->dsn); } sprintf(show, "host:%s port:%d ", host, port); diff --git a/tools/taos-tools/src/dumpUtil.c b/tools/taos-tools/src/dumpUtil.c index 8535a2f0a7..d2403ec4c0 100644 --- a/tools/taos-tools/src/dumpUtil.c +++ b/tools/taos-tools/src/dumpUtil.c @@ -136,7 +136,7 @@ TAOS *taosConnect(const char *dbName) { if (g_args.port_inputted) { port = g_args.port; } else { - port = g_args.connMode == CONN_MODE_NATIVE ? DEFAULT_PORT_NATIVE : DEFAULT_PORT_WS_LOCAL; + port = defaultPort(g_args.connMode, g_args.dsn); } sprintf(show, "host:%s port:%d ", host, port); diff --git a/tools/taos-tools/src/taosdump.c b/tools/taos-tools/src/taosdump.c index ec2917940b..6ef633fb9b 100644 --- a/tools/taos-tools/src/taosdump.c +++ b/tools/taos-tools/src/taosdump.c @@ -10856,24 +10856,6 @@ static int inspectAvroFiles(int argc, char *argv[]) { return ret; } -int32_t setConnMode(int8_t connMode) { - // default - if (connMode == CONN_MODE_INVALID) { - connMode = CONN_MODE_DEFAULT; - } - - // set conn mode - char * strMode = connMode == CONN_MODE_NATIVE ? STR_NATIVE : STR_WEBSOCKET; - int32_t code = taos_options(TSDB_OPTION_DRIVER, strMode); - if (code != TSDB_CODE_SUCCESS) { - engineError(INIT_PHASE, "taos_options", code); - return -1; - } - - infoPrint("\nConnect mode is : %s\n\n", strMode); - return 0; -} - int main(int argc, char *argv[]) { g_uniqueID = getUniqueIDFromEpoch(); @@ -10928,7 +10910,7 @@ int main(int argc, char *argv[]) { } // conn mode - if (setConnMode(g_args.connMode) != 0) { + if (setConnMode(g_args.connMode, g_args.dsn) != 0) { return -1; }