2016-11-09 12:01:48 +00:00
|
|
|
#ifndef OD_SERVER_POOL_H_
|
|
|
|
#define OD_SERVER_POOL_H_
|
|
|
|
|
|
|
|
/*
|
|
|
|
* odissey.
|
|
|
|
*
|
|
|
|
* PostgreSQL connection pooler and request router.
|
|
|
|
*/
|
|
|
|
|
|
|
|
typedef struct odserver_pool_t odserver_pool_t;
|
|
|
|
|
2016-11-15 12:28:39 +00:00
|
|
|
typedef int (*odserver_pool_cb_t)(odserver_t*, void*);
|
|
|
|
|
2016-11-09 12:01:48 +00:00
|
|
|
struct odserver_pool_t {
|
|
|
|
odlist_t active;
|
|
|
|
odlist_t connect;
|
2016-11-14 13:53:26 +00:00
|
|
|
odlist_t reset;
|
2016-11-15 12:59:55 +00:00
|
|
|
odlist_t expire;
|
2016-11-09 12:01:48 +00:00
|
|
|
odlist_t idle;
|
|
|
|
int count_active;
|
|
|
|
int count_connect;
|
2016-11-14 13:53:26 +00:00
|
|
|
int count_reset;
|
2016-11-15 12:59:55 +00:00
|
|
|
int count_expire;
|
2016-11-09 12:01:48 +00:00
|
|
|
int count_idle;
|
|
|
|
odlist_t link;
|
|
|
|
};
|
|
|
|
|
|
|
|
void od_serverpool_init(odserver_pool_t*);
|
|
|
|
void od_serverpool_free(odserver_pool_t*);
|
|
|
|
void od_serverpool_set(odserver_pool_t*, odserver_t*,
|
|
|
|
odserver_state_t);
|
|
|
|
|
2016-11-15 12:59:55 +00:00
|
|
|
odserver_t*
|
2016-11-15 13:23:04 +00:00
|
|
|
od_serverpool_pop(odserver_pool_t*, odserver_state_t);
|
2016-11-15 12:59:55 +00:00
|
|
|
|
2016-11-15 12:28:39 +00:00
|
|
|
odserver_t*
|
|
|
|
od_serverpool_foreach(odserver_pool_t*, odserver_state_t,
|
|
|
|
odserver_pool_cb_t, void*);
|
|
|
|
|
2016-11-09 12:01:48 +00:00
|
|
|
#endif
|