From 59a737b9f9793aa40e792e2f11848113002d446d Mon Sep 17 00:00:00 2001 From: Dmitry Simonenko Date: Mon, 7 Nov 2016 16:25:12 +0300 Subject: [PATCH] odissey: add config file/scheme print --- odissey.conf | 4 ++- src/od_lex.c | 1 - src/od_scheme.c | 68 +++++++++++++++++++++++++++++++++++++++++++++++-- src/od_scheme.h | 3 ++- 4 files changed, 71 insertions(+), 5 deletions(-) diff --git a/odissey.conf b/odissey.conf index cb084fea..9bd45428 100644 --- a/odissey.conf +++ b/odissey.conf @@ -1,3 +1,6 @@ + +# odissey config file. +# # odissey { @@ -38,7 +41,6 @@ odissey { routing { mode "forward" # round-robin - "bardb" { pool_min 0 pool_max 100 diff --git a/src/od_lex.c b/src/od_lex.c index 0959c4b7..c8da0eea 100644 --- a/src/od_lex.c +++ b/src/od_lex.c @@ -13,7 +13,6 @@ #include "od_macro.h" #include "od_list.h" -#include "od_scheme.h" #include "od_lex.h" void od_lexinit(odlex_t *l, odkeyword_t *list, char *buf, int size) diff --git a/src/od_scheme.c b/src/od_scheme.c index fca9057d..f73eb803 100644 --- a/src/od_scheme.c +++ b/src/od_scheme.c @@ -10,16 +10,37 @@ #include "od_macro.h" #include "od_list.h" +#include "od_log.h" #include "od_scheme.h" void od_schemeinit(odscheme_t *scheme) { - (void)scheme; + scheme->config_file = NULL; + scheme->daemonize = 0; + scheme->log_file = NULL; + scheme->pid_file = NULL; + scheme->host = "127.0.0.1"; + scheme->port = 6432; + scheme->workers = 1; + scheme->client_max = 100; + scheme->routing = "forward"; + od_listinit(&scheme->servers); + od_listinit(&scheme->routing_table); } void od_schemefree(odscheme_t *scheme) { - (void)scheme; + odlist_t *i, *n; + od_listforeach_safe(&scheme->servers, i, n) { + odscheme_server_t *server; + server = od_container_of(i, odscheme_server_t, link); + free(server); + } + od_listforeach_safe(&scheme->servers, i, n) { + odscheme_route_t *route; + route = od_container_of(i, odscheme_route_t, link); + free(route); + } } odscheme_server_t* @@ -47,3 +68,46 @@ od_scheme_addroute(odscheme_t *scheme) od_listappend(&scheme->routing_table, &r->link); return r; } + +void od_schemeprint(odscheme_t *scheme, odlog_t *log) +{ + if (scheme->config_file) + od_log(log, "using configuration file '%s'", + scheme->config_file); + else + od_log(log, "using default settings"); + if (scheme->log_file) + od_log(log, "log_file '%s'", scheme->log_file); + if (scheme->pid_file) + od_log(log, "pid_file '%s'", scheme->pid_file); + if (scheme->daemonize) + od_log(log, "daemonize %s", + scheme->daemonize ? "yes" : "no"); + od_log(log, "pooling '%s'", scheme->pooling); + od_log(log, ""); + od_log(log, "servers"); + odlist_t *i; + od_listforeach(&scheme->servers, i) { + odscheme_server_t *server; + server = od_container_of(i, odscheme_server_t, link); + od_log(log, " <%s> %s", + server->name ? server->name : "", + server->is_default ? "default" : ""); + od_log(log, " host '%s'", server->host); + od_log(log, " port '%d'", server->port); + + } + od_log(log, "routing"); + od_log(log, " mode '%s'", scheme->routing); + od_listforeach(&scheme->routing_table, i) { + odscheme_route_t *route; + route = od_container_of(i, odscheme_route_t, link); + od_log(log, " >> %s", route->database); + if (route->user) + od_log(log, " user '%s'", route->user); + if (route->password) + od_log(log, " password '****'"); + od_log(log, " pool_min %d", route->pool_min); + od_log(log, " pool_max %d", route->pool_max); + } +} diff --git a/src/od_scheme.h b/src/od_scheme.h index 36e3a573..af381739 100644 --- a/src/od_scheme.h +++ b/src/od_scheme.h @@ -52,8 +52,9 @@ void od_schemefree(odscheme_t*); odscheme_server_t* od_scheme_addserver(odscheme_t*); - odscheme_route_t* od_scheme_addroute(odscheme_t*); +void od_schemeprint(odscheme_t*, odlog_t*); + #endif