2011-04-17 16:59:51 +02:00
|
|
|
#ifndef _EVENT_H_
|
|
|
|
#define _EVENT_H_
|
|
|
|
|
|
|
|
#include <sys/time.h>
|
|
|
|
|
|
|
|
#define EVENT_NEW 0x1000
|
|
|
|
#define EVENT_DELETE 0x2000
|
|
|
|
|
|
|
|
#define FD_READ 0x0001
|
|
|
|
#define FD_WRITE 0x0002
|
|
|
|
#define FD_TYPES (FD_READ | FD_WRITE)
|
|
|
|
|
|
|
|
#define event_add_readfd(entry, fd, callback, privdata) \
|
|
|
|
event_add_fd(entry, fd, FD_READ, callback, privdata)
|
|
|
|
|
|
|
|
#define event_add_writefd(entry, fd, callback, privdata) \
|
|
|
|
event_add_fd(entry, fd, FD_WRITE, callback, privdata)
|
|
|
|
|
|
|
|
/* inner details are not visible to external users (TODO: size unknown) */
|
|
|
|
struct event_fd;
|
|
|
|
struct event_timeout;
|
|
|
|
|
|
|
|
struct event_fd * event_add_fd(
|
|
|
|
struct event_fd *entry,
|
|
|
|
int fd,
|
|
|
|
int type,
|
|
|
|
int (*callback)(int fd, void *privdata),
|
|
|
|
void *privdata);
|
|
|
|
|
|
|
|
int event_get_fd(struct event_fd *entry);
|
|
|
|
void event_remove_fd(struct event_fd *entry);
|
|
|
|
|
|
|
|
struct event_timeout * event_add_timeout(
|
|
|
|
struct timeval *timeout,
|
|
|
|
int (*callback)(void *privdata),
|
|
|
|
void *privdata);
|
|
|
|
|
|
|
|
void event_remove_timeout(struct event_timeout *entry);
|
|
|
|
|
2011-04-17 17:08:46 +02:00
|
|
|
int event_loop(int (*pre_select_cb)(int *maxfd, void *readfds, void *writefds, struct timeval *timeout, void *privdata),
|
|
|
|
int (*post_select_cb)(int retval, void *readfds, void *writefds, void *privdata),
|
|
|
|
void *privdata);
|
2011-04-17 16:59:51 +02:00
|
|
|
|
|
|
|
#endif /* _EVENT_H_ */
|