odissey: add console_query_show() and parser tokens

This commit is contained in:
Dmitry Simonenko 2017-08-07 17:45:22 +03:00
parent c89a687490
commit ccd6ad05b7
1 changed files with 53 additions and 2 deletions

View File

@ -57,6 +57,19 @@ typedef struct
machine_queue_t *response;
} od_msgconsole_t;
enum
{
OD_LSHOW,
OD_LSTATS
};
static od_keyword_t od_console_keywords[] =
{
od_keyword("show", OD_LSHOW),
od_keyword("stats", OD_LSTATS),
{ 0, 0, 0 }
};
static inline int
od_console_show_stats(od_console_t *console, od_msgconsole_t *msg_console)
{
@ -140,6 +153,17 @@ od_console_show_stats(od_console_t *console, od_msgconsole_t *msg_console)
return 0;
}
static inline int
od_console_query_show(od_console_t *console, od_parser_t *parser,
od_msgconsole_t *msg_console)
{
(void)parser;
int rc;
rc = od_console_show_stats(console, msg_console);
return rc;
}
static inline int
od_console_query(od_console_t *console, od_msgconsole_t *msg_console)
{
@ -154,9 +178,36 @@ od_console_query(od_console_t *console, od_msgconsole_t *msg_console)
od_debug_client(&instance->logger, &client->id, "console",
"%.*s", query_len, query);
od_parser_t parser;
od_parser_init(&parser, query, query_len);
od_token_t token;
int rc;
rc = od_console_show_stats(console, msg_console);
return rc;
rc = od_parser_next(&parser, &token);
switch (rc) {
case OD_PARSER_EOF:
return 0;
case OD_PARSER_KEYWORD:
break;
default:
/* error */
return -1;
}
od_keyword_t *keyword;
keyword = od_keyword_match(od_console_keywords, &token);
if (keyword == NULL) {
/* error */
return -1;
}
switch (keyword->id) {
case OD_LSHOW:
return od_console_query_show(console, &parser, msg_console);
default:
/* error */
break;
}
return -1;
}
static void