blob: fefb099119883d9308eab6090e9379a2712d4375 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
#ifndef __EVENT_H__
#define __EVENT_H__
#include <sys/epoll.h>
#include "list.h"
#define EVENT_READ 1
#define EVENT_WRITE 2
struct event_handler {
struct list_head entry;
struct list_head entry2;
struct timespec timeout_ts;
int fd;
struct epoll_event epoll_event;
int (*read)(struct event_handler *);
int (*write)(struct event_handler *);
void (*timeout)(struct event_handler *);
void (*close)(struct event_handler *);
};
struct event_deferred {
struct event_deferred *next;
void (*fn)(struct event_deferred *);
};
int event_init(void);
void event_loop();
void event_process(int timeout);
void event_terminate(void);
int event_add_handler(struct event_handler *h, int mode);
int event_enable_handler(struct event_handler *h, int mode);
int event_disable_handler(struct event_handler *h, int mode);
int event_mod_handler(struct event_handler *h, int mode);
int event_del_handler(struct event_handler *h, int close);
void event_set_timeout(struct event_handler *h, int msec);
void event_add_deferred(struct event_deferred *d);
static inline void event_init_handler(struct event_handler *h)
{
h->entry.next = NULL;
}
#endif
|