#ifndef __ELOOP_H
#define __ELOOP_H
#ifdef __cplusplus
extern "C" {
#endif
#define ELOOP_ALL_CTX (void *) -1
#define MAX_POLLFDS 32
struct eloop_sock {
int sock;
void *eloop_data;
void *user_data;
void (*handler)(int, void *, void *);
};
struct eloop_timeout {
struct timeval time;
void *eloop_data;
void *user_data;
void (*handler)(void *, void *);
struct eloop_timeout *next;
};
struct eloop_signal {
int sig;
void *user_data;
void (*handler)(int, void *, void *);
int signaled;
};
struct eloop_data {
void *user_data;
int max_sock, reader_count;
struct eloop_sock *readers;
struct eloop_timeout *timeout;
int signal_count;
struct eloop_signal *signals;
int signaled;
int terminate;
};
void eloop_init(void *);
int eloop_register_read_sock(int,
void (*handler)(int, void *, void *), void *, void *);
void eloop_unregister_read_sock(int);
int eloop_register_timeout(unsigned int, unsigned int,
void (*handler)(void *, void *), void *, void *);
void eloop_cancel_timeout(void (*handler)(void *, void *), void *, void *);
int eloop_register_signal(int, void (*handler)(int, void *, void *), void *);
void eloop_run(void);
void eloop_terminate(void);
void eloop_destroy(void);
#ifdef __cplusplus
}
#endif
#endif