From 1645bb694c4101a57de1ef7288c1880beb212098 Mon Sep 17 00:00:00 2001 From: Dmitry Simonenko Date: Fri, 11 Nov 2016 12:26:55 +0300 Subject: [PATCH] odissey: add route object --- core/od_route.h | 50 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 core/od_route.h diff --git a/core/od_route.h b/core/od_route.h new file mode 100644 index 00000000..8dfb3671 --- /dev/null +++ b/core/od_route.h @@ -0,0 +1,50 @@ +#ifndef OD_ROUTE_H_ +#define OD_ROUTE_H_ + +/* + * odissey. + * + * PostgreSQL connection pooler and request router. +*/ + +typedef struct odroute_t odroute_t; + +struct odroute_t { + odscheme_route_t *route; + odserver_pool_t server_pool; + char *user; + int user_len; + char *database; + int database_len; + odlist_t link; +}; + +static inline void +od_routeinit(odroute_t *route) +{ + route->route = NULL; + route->user = NULL; + route->user_len = 0; + route->database = NULL; + route->datababase_len = 0; + od_serverpool_init(&route->server_pool); + od_listinit(&route->link); +} + +static inline odroute_t* +od_routealloc(void) { + odroute_t *route = malloc(sizeof(*route)); + if (route == NULL) + return NULL; + od_routeinit(route); + return route; +} + +static inline void +od_routefree(odroute_t *route) +{ + od_serverpool_free(&route->server_pool); + free(route); +} + +#endif