odissey: add custom route database field

This commit is contained in:
Dmitry Simonenko 2016-11-11 13:13:44 +03:00
parent 5035c33320
commit 18a13e60f2
4 changed files with 26 additions and 1 deletions

View File

@ -49,6 +49,7 @@ static odkeyword_t od_config_keywords[] =
od_keyword("routing", OD_LROUTING),
od_keyword("route", OD_LROUTE),
od_keyword("mode", OD_LMODE),
od_keyword("database", OD_LDATABASE),
od_keyword("user", OD_LUSER),
od_keyword("password", OD_LPASSWORD),
od_keyword("pool_min", OD_LPOOL_MIN),
@ -264,7 +265,7 @@ od_configparse_route(odconfig_t *config, odtoken_t *name)
od_schemeroute_add(config->scheme);
if (route == NULL)
return -1;
route->database = name->v.string;
route->target = name->v.string;
if (od_confignext(config, '{', NULL) == -1)
return -1;
odtoken_t *tk;
@ -298,6 +299,12 @@ od_configparse_route(odconfig_t *config, odtoken_t *name)
return -1;
route->pool_max = tk->v.num;
continue;
/* database */
case OD_LDATABASE:
if (od_confignext(config, OD_LSTRING, &tk) == -1)
return -1;
route->database = tk->v.string;
continue;
/* user */
case OD_LUSER:
if (od_confignext(config, OD_LSTRING, &tk) == -1)

View File

@ -26,6 +26,7 @@ enum {
OD_LROUTING,
OD_LROUTE,
OD_LMODE,
OD_LDATABASE,
OD_LUSER,
OD_LPASSWORD,
OD_LPOOL_MIN,

View File

@ -75,6 +75,19 @@ od_schemeserver_match(odscheme_t *scheme, char *name)
return NULL;
}
odscheme_route_t*
od_schemeroute_match(odscheme_t *scheme, char *name)
{
odlist_t *i;
od_listforeach(&scheme->routing_table, i) {
odscheme_route_t *route;
route = od_container_of(i, odscheme_route_t, link);
if (strcmp(route->target, name) == 0)
return route;
}
return NULL;
}
odscheme_route_t*
od_schemeroute_add(odscheme_t *scheme)
{

View File

@ -35,6 +35,7 @@ struct odscheme_server_t {
struct odscheme_route_t {
odscheme_server_t *server;
char *target;
char *route;
char *database;
char *user;
@ -81,4 +82,7 @@ od_schemeserver_match(odscheme_t*, char*);
odscheme_route_t*
od_schemeroute_add(odscheme_t*);
odscheme_route_t*
od_schemeroute_match(odscheme_t*, char*);
#endif