2018-08-28 14:43:46 +00:00
|
|
|
#ifndef ODYSSEY_SERVER_POOL_H
|
|
|
|
#define ODYSSEY_SERVER_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_server_pool od_server_pool_t;
|
2017-05-25 12:00:58 +00:00
|
|
|
|
2018-08-28 14:43:46 +00:00
|
|
|
typedef int (*od_server_pool_cb_t)(od_server_t*, void*);
|
2017-05-25 12:00:58 +00:00
|
|
|
|
2018-08-28 14:43:46 +00:00
|
|
|
struct od_server_pool
|
2017-05-25 12:00:58 +00:00
|
|
|
{
|
|
|
|
od_list_t active;
|
|
|
|
od_list_t idle;
|
2017-05-29 15:15:18 +00:00
|
|
|
od_list_t expire;
|
2017-05-25 12:00:58 +00:00
|
|
|
int count_active;
|
|
|
|
int count_idle;
|
2017-05-29 15:15:18 +00:00
|
|
|
int count_expire;
|
2017-05-25 12:00:58 +00:00
|
|
|
od_list_t link;
|
|
|
|
};
|
|
|
|
|
2018-08-28 14:43:46 +00:00
|
|
|
void od_server_pool_init(od_server_pool_t*);
|
|
|
|
void od_server_pool_free(od_server_pool_t*);
|
|
|
|
void od_server_pool_set(od_server_pool_t*, od_server_t*,
|
|
|
|
od_server_state_t);
|
2017-05-25 12:00:58 +00:00
|
|
|
|
|
|
|
od_server_t*
|
2018-08-28 14:43:46 +00:00
|
|
|
od_server_pool_next(od_server_pool_t*, od_server_state_t);
|
2017-05-25 12:00:58 +00:00
|
|
|
|
|
|
|
od_server_t*
|
2018-08-28 14:43:46 +00:00
|
|
|
od_server_pool_foreach(od_server_pool_t*, od_server_state_t,
|
|
|
|
od_server_pool_cb_t, void*);
|
2017-05-25 12:00:58 +00:00
|
|
|
|
2017-05-31 13:48:44 +00:00
|
|
|
static inline int
|
2018-08-28 14:43:46 +00:00
|
|
|
od_server_pool_total(od_server_pool_t *pool)
|
|
|
|
{
|
2017-06-07 14:59:13 +00:00
|
|
|
return pool->count_active +
|
|
|
|
pool->count_idle +
|
2017-05-31 13:48:44 +00:00
|
|
|
pool->count_expire;
|
|
|
|
}
|
|
|
|
|
2018-08-28 14:43:46 +00:00
|
|
|
#endif /* ODYSSEY_SERVER_POOL_H */
|