-void event_add(event_t *event) {
- event->id = ++id;
- avl_insert(event_tree, event);
+void timeout_set(timeout_t *timeout, const struct timeval *tv) {
+ if(timerisset(&timeout->tv)) {
+ splay_unlink_node(&timeout_tree, &timeout->node);
+ }
+
+ if(!now.tv_sec) {
+ gettimeofday(&now, NULL);
+ }
+
+ timeradd(&now, tv, &timeout->tv);
+
+ if(!splay_insert_node(&timeout_tree, &timeout->node)) {
+ abort();
+ }