From c89a6874909ff5803ecda2dfef15681fe9fde557 Mon Sep 17 00:00:00 2001 From: Dmitry Simonenko Date: Mon, 7 Aug 2017 17:38:05 +0300 Subject: [PATCH] odissey: add console query parser function --- sources/config.c | 2 -- sources/console.c | 35 ++++++++++++++++++++++------------- sources/parser.h | 3 +++ 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/sources/config.c b/sources/config.c index eaee4c9b..e6da4ec7 100644 --- a/sources/config.c +++ b/sources/config.c @@ -97,8 +97,6 @@ typedef struct uint64_t version; } od_config_t; -#define od_keyword(name, token) { token, name, sizeof(name) - 1 } - static od_keyword_t od_config_keywords[] = { /* main */ diff --git a/sources/console.c b/sources/console.c index ca874115..e3bd1fc1 100644 --- a/sources/console.c +++ b/sources/console.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include @@ -45,6 +46,7 @@ #include "sources/frontend.h" #include "sources/backend.h" #include "sources/console.h" +#include "sources/parser.h" typedef struct { @@ -104,7 +106,6 @@ od_console_show_stats(od_console_t *console, od_msgconsole_t *msg_console) if (rc == -1) return -1; - offset = shapito_be_write_data_row(stream); rc = shapito_be_write_data_row_add(stream, offset, "test", 4); if (rc == -1) @@ -139,6 +140,25 @@ od_console_show_stats(od_console_t *console, od_msgconsole_t *msg_console) return 0; } +static inline int +od_console_query(od_console_t *console, od_msgconsole_t *msg_console) +{ + od_instance_t *instance = console->system->instance; + od_client_t *client = msg_console->client; + + uint32_t query_len; + char *query; + shapito_be_read_query(&query, &query_len, msg_console->request, + msg_console->request_len); + + od_debug_client(&instance->logger, &client->id, "console", + "%.*s", query_len, query); + + int rc; + rc = od_console_show_stats(console, msg_console); + return rc; +} + static void od_console(void *arg) { @@ -158,24 +178,13 @@ od_console(void *arg) { od_msgconsole_t *msg_console; msg_console = machine_msg_get_data(msg); - - uint32_t query_len; - char *query; - shapito_be_read_query(&query, &query_len, msg_console->request, - msg_console->request_len); - - od_client_t *client = msg_console->client; - od_debug_client(&instance->logger, &client->id, "console", - "%.*s", query_len, query); - int rc; - rc = od_console_show_stats(console, msg_console); + rc = od_console_query(console, msg_console); if (rc == -1) { msg_console->status = OD_CERROR; } else { msg_console->status = OD_COK; } - machine_queue_put(msg_console->response, msg); break; } diff --git a/sources/parser.h b/sources/parser.h index f7b5e535..1551f76c 100644 --- a/sources/parser.h +++ b/sources/parser.h @@ -40,6 +40,9 @@ struct od_keyword int name_len; }; +#define od_keyword(name, token) \ + { token, name, sizeof(name) - 1 } + struct od_parser { char *pos;