diff options
author | Guangxiong Lin <[email protected]> | 2022-12-17 09:33:30 +0800 |
---|---|---|
committer | Guangxiong Lin <[email protected]> | 2022-12-17 20:51:37 +0800 |
commit | 7bb3515bc303a2a35fe859bcdba2795fbe06643d (patch) | |
tree | 453d9cc321bc561ae8bae911308925d61dccb2f7 /src/evloop.c | |
parent | 1def149b9245563a8ba1db9e937d537da8de8d27 (diff) | |
download | tinyserver-7bb3515bc303a2a35fe859bcdba2795fbe06643d.tar.gz tinyserver-7bb3515bc303a2a35fe859bcdba2795fbe06643d.tar.bz2 tinyserver-7bb3515bc303a2a35fe859bcdba2795fbe06643d.zip |
Make server as a library
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); } } } |