/*
- event.h -- I/O, timeout and signal event handling
+ event.h -- I/O and timeout event handling
Copyright (C) 2014 Guus Sliepen <guus@meshlink.io>
This program is free software; you can redistribute it and/or modify
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 io_t {
int fd;
struct splay_node_t node;
} timeout_t;
-typedef struct signal_t {
- 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;
splay_tree_t ios;
splay_tree_t timeouts;
- splay_tree_t signals;
-
- io_t signalio;
- int pipefd[2];
void *data;
};
extern void timeout_del(event_loop_t *loop, timeout_t *timeout);
extern void timeout_set(event_loop_t *loop, timeout_t *timeout, struct timeval *tv);
-extern void signal_add(event_loop_t *loop, signal_t *sig, signal_cb_t cb, void *data, uint8_t signum);
-extern void signal_trigger(event_loop_t *loop, signal_t *sig);
-extern void signal_del(event_loop_t *loop, signal_t *sig);
-
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);