odyssey/sources/server_pool.h

46 lines
984 B
C
Raw Normal View History

#ifndef ODYSSEY_SERVER_POOL_H
#define ODYSSEY_SERVER_POOL_H
/*
2018-03-12 14:03:15 +00:00
* Odyssey.
*
2018-04-04 13:19:58 +00:00
* Scalable PostgreSQL connection pooler.
*/
typedef struct od_server_pool od_server_pool_t;
typedef int (*od_server_pool_cb_t)(od_server_t*, void*);
struct od_server_pool
{
od_list_t active;
od_list_t idle;
2017-05-29 15:15:18 +00:00
od_list_t expire;
int count_active;
int count_idle;
2017-05-29 15:15:18 +00:00
int count_expire;
od_list_t link;
};
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);
od_server_t*
od_server_pool_next(od_server_pool_t*, od_server_state_t);
od_server_t*
od_server_pool_foreach(od_server_pool_t*, od_server_state_t,
od_server_pool_cb_t, void*);
static inline int
od_server_pool_total(od_server_pool_t *pool)
{
return pool->count_active +
pool->count_idle +
pool->count_expire;
}
#endif /* ODYSSEY_SERVER_POOL_H */