aboutsummaryrefslogtreecommitdiff
path: root/eventloop.c
diff options
context:
space:
mode:
Diffstat (limited to 'eventloop.c')
-rw-r--r--eventloop.c84
1 files changed, 0 insertions, 84 deletions
diff --git a/eventloop.c b/eventloop.c
deleted file mode 100644
index ae4377c..0000000
--- a/eventloop.c
+++ /dev/null
@@ -1,84 +0,0 @@
-#include <stdlib.h>
-#include <sys/epoll.h>
-
-#include "eventloop.h"
-#include "util.h"
-#include "constant.h"
-
-struct eventLoop *eventLoopNew()
-{
- int epollfd = epoll_create1(0);
- if (epollfd == -1)
- return NULL;
-
- struct eventLoop *eventLoop = malloc(sizeof(*eventLoop));
- eventLoop->epollfd = epollfd;
- eventLoop->size = EVENT_LOOP_MAX_EVENTS;
-
- return eventLoop;
-}
-
-int eventLoopWait(struct eventLoop *el, int timeout)
-{
- return epoll_wait(el->epollfd, el->events, el->size, timeout);
-}
-
-struct tsocket *eventLoopGetSocket(struct eventLoop *el, int index)
-{
- return (struct tsocket *)el->events[index].data.ptr;
-}
-
-int eventLoopAdd(struct eventLoop *el, struct event *ev, int flag)
-{
- struct epoll_event epev;
- epev.events = flag;
- epev.data.ptr = ev;
-
- return epoll_ctl(el->epollfd, EPOLL_CTL_ADD, ev->fd, &epev);
-}
-
-struct event *eventLoopGet(struct eventLoop *el, int index)
-{
- return (struct event *)el->events[index].data.ptr;
-}
-
-void eventLoopLoop(struct eventLoop *el)
-{
- int nevents;
- struct event *ev;
-
- for (;;) {
- nevents = eventLoopWait(el, -1);
- if (nevents == -1)
- panic("eventloop wait");
-
- for (int i = 0; i < nevents; i++) {
- ev = eventLoopGet(el, i);
- if (ev->handle(ev->data) == -1)
- eventLoopDel(el, ev);
- }
- }
-}
-
-int eventLoopDel(struct eventLoop *el, struct event *ev)
-{
- if (epoll_ctl(el->epollfd, EPOLL_CTL_DEL, ev->fd, NULL) == -1)
- return ERROR;
-
- if (ev->delete)
- ev->delete(ev->data);
- free(ev);
-
- return OK;
-}
-
-struct event *eventNew(void *data, int fd, void (*handle), void (*delete))
-{
- struct event *ev = malloc(sizeof(*ev));
- ev->data = data;
- ev->handle = handle;
- ev->fd = fd;
- ev->delete = delete;
-
- return ev;
-}