X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=src%2Fevent.h;h=53559f80368bcf6606c3e440a917399e57fbf40e;hb=529b4d002a9b8cfb9be829b1d1422b4a2e1205d2;hp=4eb182518b350ba57cb7c036e0340f7c70e4ba6b;hpb=a387ef3cd807b90bbdf39581b6aea1bce9573f19;p=meshlink diff --git a/src/event.h b/src/event.h index 4eb18251..53559f80 100644 --- a/src/event.h +++ b/src/event.h @@ -31,6 +31,7 @@ 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 io_t { int fd; @@ -66,6 +67,9 @@ struct event_loop_t { splay_tree_t timeouts; splay_tree_t signals; + idle_cb_t idle_cb; + void *idle_data; + io_t signalio; int pipefd[2]; @@ -84,6 +88,8 @@ extern void signal_add(event_loop_t *loop, signal_t *sig, signal_cb_t cb, void * extern void signal_trigger(event_loop_t *loop, signal_t *sig); extern void signal_del(event_loop_t *loop, signal_t *sig); +extern void idle_set(event_loop_t *loop, idle_cb_t cb, void *data); + extern void event_loop_init(event_loop_t *loop); extern void event_loop_exit(event_loop_t *loop); extern bool event_loop_run(event_loop_t *loop, pthread_mutex_t *mutex);