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.
|
|
|
|
*/
|
|
|
|
|
2016-11-29 13:17:16 +00:00
|
|
|
typedef struct od_serverpool_t od_serverpool_t;
|
2016-11-09 12:01:48 +00:00
|
|
|
|
2016-11-29 13:17:16 +00:00
|
|
|
typedef int (*od_serverpool_cb_t)(od_server_t*, void*);
|
2016-11-15 12:28:39 +00:00
|
|
|
|
2016-11-29 13:17:16 +00:00
|
|
|
struct od_serverpool_t {
|
2016-11-29 13:03:39 +00:00
|
|
|
od_list_t active;
|
|
|
|
od_list_t connect;
|
|
|
|
od_list_t reset;
|
|
|
|
od_list_t expire;
|
|
|
|
od_list_t idle;
|
|
|
|
int count_active;
|
|
|
|
int count_connect;
|
|
|
|
int count_reset;
|
|
|
|
int count_expire;
|
|
|
|
int count_idle;
|
|
|
|
od_list_t link;
|
2016-11-09 12:01:48 +00:00
|
|
|
};
|
|
|
|
|
2016-11-29 13:17:16 +00:00
|
|
|
void od_serverpool_init(od_serverpool_t*);
|
|
|
|
void od_serverpool_free(od_serverpool_t*);
|
|
|
|
void od_serverpool_set(od_serverpool_t*, od_server_t*,
|
2016-11-29 13:13:42 +00:00
|
|
|
od_serverstate_t);
|
2016-11-09 12:01:48 +00:00
|
|
|
|
2016-11-29 13:13:42 +00:00
|
|
|
od_server_t*
|
2016-11-29 13:17:16 +00:00
|
|
|
od_serverpool_pop(od_serverpool_t*, od_serverstate_t);
|
2016-11-15 12:59:55 +00:00
|
|
|
|
2016-11-29 13:13:42 +00:00
|
|
|
od_server_t*
|
2016-11-29 13:17:16 +00:00
|
|
|
od_serverpool_foreach(od_serverpool_t*, od_serverstate_t,
|
|
|
|
od_serverpool_cb_t, void*);
|
2016-11-15 12:28:39 +00:00
|
|
|
|
2016-11-09 12:01:48 +00:00
|
|
|
#endif
|