- server_t *tmp = server_acquire();
- tmp->event = true;
- tmp->fd = fds[0];
- tmp->fd2 = fds[1];
- tmp->data = data;
- epoll_register(fds[0], EPOLLIN, tmp);
- return tmp->fd2;
-}
-
-bool event_fire(int event)
-{
- static const char *data = "";
- return write(event, data, 1) == 0;
-}
-
-static bool event_cancel(int event)
-{
- static char buff[1];
- while (true) {
- ssize_t res = read(event, buff, 64);
- if (res == -1 && errno != EAGAIN && errno != EINTR) {
- UNIXERR("read");
- return false;
- } else if (res == -1 && errno == EINTR) {
- continue;
- } else if (res != 1) {
- return true;
- }
- }
+ server_t *tmp = server_acquire();
+ tmp->listener = false;
+ tmp->fd = fd;
+ tmp->data = data;
+ tmp->run = runner;
+ tmp->clear_data = NULL;
+ epoll_register(fd, EPOLLIN, tmp);
+ return tmp;