X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=src%2Fevent.h;h=245656a338bdf178bad4d0dc01beb25c3c0204e0;hb=3a9f2423b3be9423619f74ff5ea277fcb6e28660;hp=02d1958352fe291ef5698aec0ac66ace0813fafe;hpb=7bbb509d0d0e00b998c0b253574c39da9e0ff56b;p=meshlink diff --git a/src/event.h b/src/event.h index 02d19583..245656a3 100644 --- a/src/event.h +++ b/src/event.h @@ -1,6 +1,9 @@ +#ifndef MESHLINK_EVENT_H +#define MESHLINK_EVENT_H + /* event.h -- I/O, timeout and signal event handling - Copyright (C) 2014 Guus Sliepen + Copyright (C) 2014, 2017 Guus Sliepen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,9 +20,6 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef __MESHLINK_EVENT_H__ -#define __MESHLINK_EVENT_H__ - #include "splay_tree.h" #include "system.h" #include @@ -32,49 +32,49 @@ typedef struct event_loop_t event_loop_t; typedef void (*io_cb_t)(event_loop_t *loop, void *data, int flags); typedef void (*timeout_cb_t)(event_loop_t *loop, void *data); typedef void (*signal_cb_t)(event_loop_t *loop, void *data); -typedef struct timeval (*idle_cb_t)(event_loop_t *loop, void *data); +typedef struct timeval(*idle_cb_t)(event_loop_t *loop, void *data); typedef struct io_t { + struct splay_node_t node; int fd; int flags; io_cb_t cb; void *data; - struct splay_node_t node; } io_t; typedef struct timeout_t { + struct splay_node_t node; struct timeval tv; timeout_cb_t cb; void *data; - struct splay_node_t node; } timeout_t; typedef struct signal_t { + struct splay_node_t node; int signum; signal_cb_t cb; void *data; - struct splay_node_t node; } signal_t; struct event_loop_t { - fd_set readfds; - fd_set writefds; + void *data; volatile bool running; - struct timeval now; bool deletion; - - splay_tree_t ios; - splay_tree_t timeouts; - splay_tree_t signals; + struct timeval now; + + splay_tree_t timeouts; idle_cb_t idle_cb; void *idle_data; + splay_tree_t ios; + splay_tree_t signals; + + fd_set readfds; + fd_set writefds; io_t signalio; int pipefd[2]; - - void *data; }; extern void io_add(event_loop_t *loop, io_t *io, io_cb_t cb, void *data, int fd, int flags);