mirror of https://github.com/yandex/odyssey.git
odissey: add console_query_show() and parser tokens
This commit is contained in:
parent
c89a687490
commit
ccd6ad05b7
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue