2 #include <yaz/sock_man.h>
7 struct yaz_sock_man_s {
8 yaz_sock_chan_t chan_list;
9 yaz_sock_chan_t free_list;
13 yaz_sock_chan_t *events;
16 struct yaz_sock_chan_s {
24 yaz_sock_man_t yaz_sock_man_new(void)
26 NMEM nmem = nmem_create();
27 yaz_sock_man_t man = nmem_malloc(nmem, sizeof(*man));
31 man->epoll_handle = epoll_create(100);
33 man->events = nmem_malloc(nmem, man->maxevents * sizeof(*man->events));
34 if (man->epoll_handle == -1)
36 yaz_sock_man_destroy(man);
42 void yaz_sock_man_destroy(yaz_sock_man_t man)
46 if (man->epoll_handle != -1)
47 close(man->epoll_handle);
48 assert(man->chan_list == 0);
49 nmem_destroy(man->nmem);
53 yaz_sock_chan_t yaz_sock_chan_new(yaz_sock_man_t srv, int fd, void *data)
59 srv->free_list = p->next;
62 p = nmem_malloc(srv->nmem, sizeof(*p));
63 p->next = srv->chan_list;
75 void yaz_sock_chan_destroy(yaz_sock_man_t srv, yaz_sock_chan_t p)
78 p->prev->next = p->next;
81 assert(srv->chan_list == p);
82 srv->chan_list = p->next;
86 p->next->prev = p->prev;
88 p->next = srv->free_list;
93 yaz_sock_chan_t yaz_sock_man_wait(yaz_sock_man_t man)
98 void yaz_sock_chan_set_mask(yaz_sock_chan_t chan, unsigned mask)
103 unsigned yaz_sock_get_mask(yaz_sock_chan_t chan)
108 void *yaz_sock_chan_get_data(yaz_sock_chan_t chan)
117 * c-file-style: "Stroustrup"
118 * indent-tabs-mode: nil
120 * vim: shiftwidth=4 tabstop=8 expandtab