diff options
Diffstat (limited to 'src/evloop.c')
-rw-r--r-- | src/evloop.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/evloop.c b/src/evloop.c index 5bed1e9..5002b24 100644 --- a/src/evloop.c +++ b/src/evloop.c @@ -1,5 +1,6 @@ #include <stdlib.h> #include <sys/epoll.h> +#include <unistd.h> #include "evloop.h" #include "util.h" @@ -25,6 +26,12 @@ evloop_t *evloop_create() return eventLoop; } +void evloop_destroy(evloop_t *evloop) +{ + close(evloop->epollfd); + free(evloop); +} + int evloop_wait(evloop_t *el, int timeout) { return epoll_wait(el->epollfd, el->events, el->size, timeout); @@ -56,9 +63,8 @@ void evloop_loop(evloop_t *el) for (int i = 0; i < nevents; i++) { ev = evloop_get(el, i); - // TODO: detect if there is any issue of the handle function - // and delete the event when issues happen - tpool_add_work(tpool, ev->process, ev->data); + if (ev->process(ev->data) == -1) + evloop_remove(el, ev); } } } |