mirror of https://github.com/yandex/odyssey.git
52 lines
905 B
C
52 lines
905 B
C
![]() |
#ifndef OD_CLIENT_LIST_H_
|
||
|
#define OD_CLIENT_LIST_H_
|
||
|
|
||
|
/*
|
||
|
* odissey.
|
||
|
*
|
||
|
* PostgreSQL connection lister and request router.
|
||
|
*/
|
||
|
|
||
|
typedef struct od_clientlist_t od_clientlist_t;
|
||
|
|
||
|
struct od_clientlist_t {
|
||
|
od_list_t list;
|
||
|
int count;
|
||
|
};
|
||
|
|
||
|
static inline void
|
||
|
od_clientlist_init(od_clientlist_t *list)
|
||
|
{
|
||
|
od_listinit(&list->list);
|
||
|
list->count = 0;
|
||
|
}
|
||
|
|
||
|
static inline void
|
||
|
od_clientlist_free(od_clientlist_t *list)
|
||
|
{
|
||
|
od_client_t *client;
|
||
|
od_list_t *i, *n;
|
||
|
od_listforeach_safe(&list->list, i, n) {
|
||
|
client = od_container_of(i, od_client_t, link);
|
||
|
/* ... */
|
||
|
od_clientfree(client);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
static inline void
|
||
|
od_clientlist_add(od_clientlist_t *list, od_client_t *client)
|
||
|
{
|
||
|
od_listappend(&list->list, &client->link);
|
||
|
list->count++;
|
||
|
}
|
||
|
|
||
|
static inline void
|
||
|
od_clientlist_unlink(od_clientlist_t *list, od_client_t *client)
|
||
|
{
|
||
|
assert(list->count > 0);
|
||
|
od_listunlink(&client->link);
|
||
|
list->count--;
|
||
|
}
|
||
|
|
||
|
#endif
|