2018-08-28 14:43:46 +00:00
|
|
|
#ifndef ODYSSEY_ROUTE_POOL_H
|
|
|
|
#define ODYSSEY_ROUTE_POOL_H
|
2017-05-25 12:00:58 +00:00
|
|
|
|
|
|
|
/*
|
2018-03-12 14:03:15 +00:00
|
|
|
* Odyssey.
|
2017-05-25 12:00:58 +00:00
|
|
|
*
|
2018-04-04 13:19:58 +00:00
|
|
|
* Scalable PostgreSQL connection pooler.
|
2017-05-25 12:00:58 +00:00
|
|
|
*/
|
|
|
|
|
2018-08-28 14:43:46 +00:00
|
|
|
typedef struct od_route_pool od_route_pool_t;
|
2017-05-25 12:00:58 +00:00
|
|
|
|
2018-09-19 10:45:10 +00:00
|
|
|
typedef int (*od_route_pool_cb_t)(od_route_t*, void*);
|
|
|
|
|
2018-08-28 14:43:46 +00:00
|
|
|
typedef int (*od_route_pool_stat_cb_t)
|
2018-08-02 16:02:02 +00:00
|
|
|
(od_route_t *route,
|
|
|
|
od_stat_t *current,
|
|
|
|
od_stat_t *avg, void *arg);
|
|
|
|
|
2018-08-28 14:43:46 +00:00
|
|
|
typedef int (*od_route_pool_stat_database_cb_t)
|
2017-08-11 15:19:29 +00:00
|
|
|
(char *database,
|
|
|
|
int database_len,
|
2018-08-02 13:38:36 +00:00
|
|
|
od_stat_t *total,
|
|
|
|
od_stat_t *avg, void *arg);
|
2017-08-11 15:19:29 +00:00
|
|
|
|
2018-08-28 14:43:46 +00:00
|
|
|
struct od_route_pool
|
2017-05-25 12:00:58 +00:00
|
|
|
{
|
|
|
|
od_list_t list;
|
2017-05-31 11:38:06 +00:00
|
|
|
int count;
|
2017-05-25 12:00:58 +00:00
|
|
|
};
|
|
|
|
|
2018-08-28 14:43:46 +00:00
|
|
|
void od_route_pool_init(od_route_pool_t*);
|
|
|
|
void od_route_pool_free(od_route_pool_t*);
|
|
|
|
void od_route_pool_gc(od_route_pool_t*);
|
2017-05-25 12:00:58 +00:00
|
|
|
|
|
|
|
od_route_t*
|
2018-08-28 14:43:46 +00:00
|
|
|
od_route_pool_new(od_route_pool_t*, od_config_route_t*,
|
|
|
|
od_route_id_t*);
|
2017-05-25 12:00:58 +00:00
|
|
|
|
|
|
|
od_route_t*
|
2018-08-28 14:43:46 +00:00
|
|
|
od_route_pool_match(od_route_pool_t*, od_route_id_t*, od_config_route_t*);
|
2017-05-25 12:00:58 +00:00
|
|
|
|
|
|
|
od_server_t*
|
2018-08-28 14:43:46 +00:00
|
|
|
od_route_pool_next(od_route_pool_t*, od_server_state_t);
|
2017-05-25 12:00:58 +00:00
|
|
|
|
2018-09-19 10:45:10 +00:00
|
|
|
int od_route_pool_foreach(od_route_pool_t*, od_route_pool_cb_t, void*);
|
|
|
|
|
2017-05-25 12:00:58 +00:00
|
|
|
od_server_t*
|
2018-08-28 14:43:46 +00:00
|
|
|
od_route_pool_server_foreach(od_route_pool_t*, od_server_state_t,
|
|
|
|
od_server_pool_cb_t, void*);
|
2017-08-17 15:38:10 +00:00
|
|
|
|
|
|
|
od_client_t*
|
2018-08-28 14:43:46 +00:00
|
|
|
od_route_pool_client_foreach(od_route_pool_t*, od_client_state_t,
|
|
|
|
od_client_pool_cb_t, void*);
|
2017-05-25 12:00:58 +00:00
|
|
|
|
2018-08-28 14:43:46 +00:00
|
|
|
int od_route_pool_stat_database(od_route_pool_t *pool,
|
|
|
|
od_route_pool_stat_database_cb_t,
|
|
|
|
uint64_t,
|
|
|
|
void*);
|
2018-08-02 16:02:02 +00:00
|
|
|
|
2018-08-28 14:43:46 +00:00
|
|
|
int od_route_pool_stat(od_route_pool_t *pool,
|
|
|
|
od_route_pool_stat_cb_t,
|
|
|
|
uint64_t,
|
|
|
|
void*);
|
2017-08-11 15:19:29 +00:00
|
|
|
|
2018-08-28 14:43:46 +00:00
|
|
|
#endif /* ODYSSEY_ROUTE_POOL_H */
|