+#ifndef TINC_EVENT_H
+#define TINC_EVENT_H
+
/*
event.h -- I/O, timeout and signal event handling
Copyright (C) 2012-2013 Guus Sliepen <guus@tinc-vpn.org>
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-#ifndef __TINC_EVENT_H__
-#define __TINC_EVENT_H__
-
+#include "system.h"
#include "splay_tree.h"
#define IO_READ 1
typedef struct io_t {
int fd;
int flags;
-#ifdef HAVE_MINGW
+#ifdef HAVE_WINDOWS
WSAEVENT event;
#endif
io_cb_t cb;
int signum;
signal_cb_t cb;
void *data;
- splay_node_t node;
} signal_t;
extern struct timeval now;
+extern splay_tree_t io_tree;
+extern splay_tree_t timeout_tree;
+
extern void io_add(io_t *io, io_cb_t cb, void *data, int fd, int flags);
-#ifdef HAVE_MINGW
-extern void io_add_event(io_t *io, io_cb_t cb, void* data, WSAEVENT event);
+#ifdef HAVE_WINDOWS
+extern void io_add_event(io_t *io, io_cb_t cb, void *data, WSAEVENT event);
#endif
extern void io_del(io_t *io);
extern void io_set(io_t *io, int flags);
-extern void timeout_add(timeout_t *timeout, timeout_cb_t cb, void *data, struct timeval *tv);
+extern void timeout_add(timeout_t *timeout, timeout_cb_t cb, void *data, const struct timeval *tv);
extern void timeout_del(timeout_t *timeout);
-extern void timeout_set(timeout_t *timeout, struct timeval *tv);
+extern void timeout_set(timeout_t *timeout, const struct timeval *tv);
+extern struct timeval *timeout_execute(struct timeval *diff);
extern void signal_add(signal_t *sig, signal_cb_t cb, void *data, int signum);
extern void signal_del(signal_t *sig);