From eb56eca8ecdbbfe5102972707cf0754f27f86ead Mon Sep 17 00:00:00 2001 From: Eugine Blikh <bigbes@gmail.com> Date: Tue, 10 Sep 2013 02:05:30 +0400 Subject: [PATCH] 1. Get port number from admin connection 2. delete setopt and delimiter contractions --- client/tarantool/tc.c | 31 +++++++++++++++++++++++++------ client/tarantool/tc_cli.c | 2 -- client/tarantool/tc_opt.c | 3 +-- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/client/tarantool/tc.c b/client/tarantool/tc.c index 2b190f07b2..4ae9e02b48 100644 --- a/client/tarantool/tc.c +++ b/client/tarantool/tc.c @@ -45,9 +45,12 @@ #include "client/tarantool/tc.h" #include "client/tarantool/tc_cli.h" #include "client/tarantool/tc_print.h" +#include "client/tarantool/tc_store.h" +#include "client/tarantool/tc_query.h" #include "client/tarantool/tc_print_snap.h" #include "client/tarantool/tc_print_xlog.h" -#include "client/tarantool/tc_store.h" + +#define TC_DEFAULT_PORT 33013 struct tc tc; @@ -79,6 +82,8 @@ void tc_error(char *fmt, ...) { static void tc_connect(void) { + if (tc.opt.port == 0) + tc.opt.port = TC_DEFAULT_PORT; /* allocating stream */ tc.net = tnt_net(NULL); if (tc.net == NULL) @@ -97,10 +102,25 @@ static void tc_connect(void) static void tc_connect_admin(void) { + if (tc_admin_connect(&tc.admin, tc.opt.host, tc.opt.port_admin) == -1) tc_error("admin console connection failed"); + if (tc.opt.port == 0) { + char *reply = NULL; + size_t size = 0; + int port = 0; + if (tc_admin_query(&tc.admin, "lua box.cfg.primary_port") == -1) + tc_error("cannot send query"); + if (tc_admin_reply(&tc.admin, &reply, &size) == -1) + tc_error("cannot recv query"); + sscanf(reply, "---\n - %d\n...", &port); + if (port < 1024) + tc_error("cannot parse port number: %d", port); + tc.opt.port = port; + free(reply); + } } static void tc_validate(void) @@ -108,12 +128,11 @@ static void tc_validate(void) tc.opt.xlog_printer = tc_print_getxlogcb(tc.opt.format); tc.opt.snap_printer = tc_print_getsnapcb(tc.opt.format); if (tc.opt.xlog_printer == NULL) - return tc_error("unsupported output xlog format '%s'", + tc_error("unsupported output xlog format '%s'", tc.opt.format); if (tc.opt.snap_printer == NULL) - return tc_error("unsupported output snap format '%s'", + tc_error("unsupported output snap format '%s'", tc.opt.format); - if (tc.opt.format && strcmp(tc.opt.format, "raw") == 0) tc.opt.raw = 1; } @@ -144,13 +163,13 @@ int main(int argc, char *argv[]) rc = tc_store_play(); break; case TC_OPT_CMD: - tc_connect(); tc_connect_admin(); + tc_connect(); rc = tc_cli_cmdv(); break; case TC_OPT_INTERACTIVE: - tc_connect(); tc_connect_admin(); + tc_connect(); rc = tc_cli(); break; } diff --git a/client/tarantool/tc_cli.c b/client/tarantool/tc_cli.c index 674e990716..c57b2b1857 100644 --- a/client/tarantool/tc_cli.c +++ b/client/tarantool/tc_cli.c @@ -114,9 +114,7 @@ static struct tnt_lex_keyword tc_lex_keywords[] = { "tee", 3, TC_TEE }, { "notee", 5, TC_NOTEE }, { "loadfile", 8, TC_LOADFILE }, - { "s", 1, TC_SETOPT}, { "setopt", 6, TC_SETOPT}, - { "delim", 5, TC_SETOPT_DELIM}, { "delimiter", 9, TC_SETOPT_DELIM}, { NULL, 0, TNT_TK_NONE } }; diff --git a/client/tarantool/tc_opt.c b/client/tarantool/tc_opt.c index 93d0f4a008..c0096a275c 100644 --- a/client/tarantool/tc_opt.c +++ b/client/tarantool/tc_opt.c @@ -37,7 +37,6 @@ #define TC_DEFAULT_HOST "localhost" -#define TC_DEFAULT_PORT 33013 #define TC_DEFAULT_PORT_ADMIN 33015 /* supported cli options */ @@ -116,7 +115,7 @@ enum tc_opt_mode tc_opt_init(struct tc_opt *opt, int argc, char **argv) /* server port */ const char *arg = NULL; - opt->port = TC_DEFAULT_PORT; + opt->port = 0; if (gopt_arg(tc_options, 'p', &arg)) opt->port = atoi(arg); -- GitLab