00001
00024 #ifndef ELOOP_H
00025 #define ELOOP_H
00026
00031 #define ELOOP_ALL_CTX (void *) -1
00032
00040 typedef enum {
00041 EVENT_TYPE_READ = 0,
00042 EVENT_TYPE_WRITE,
00043 EVENT_TYPE_EXCEPTION
00044 } eloop_event_type;
00045
00053 typedef void (*eloop_sock_handler)(int sock, void *eloop_ctx, void *sock_ctx);
00054
00061 typedef void (*eloop_event_handler)(void *eloop_data, void *user_ctx);
00062
00069 typedef void (*eloop_timeout_handler)(void *eloop_data, void *user_ctx);
00070
00081 typedef void (*eloop_signal_handler)(int sig, void *eloop_ctx,
00082 void *signal_ctx);
00083
00094 int eloop_init(void *user_data);
00095
00111 int eloop_register_read_sock(int sock, eloop_sock_handler handler,
00112 void *eloop_data, void *user_data);
00113
00122 void eloop_unregister_read_sock(int sock);
00123
00140 int eloop_register_sock(int sock, eloop_event_type type,
00141 eloop_sock_handler handler,
00142 void *eloop_data, void *user_data);
00143
00153 void eloop_unregister_sock(int sock, eloop_event_type type);
00154
00178 int eloop_register_event(void *event, size_t event_size,
00179 eloop_event_handler handler,
00180 void *eloop_data, void *user_data);
00181
00191 void eloop_unregister_event(void *event, size_t event_size);
00192
00206 int eloop_register_timeout(unsigned int secs, unsigned int usecs,
00207 eloop_timeout_handler handler,
00208 void *eloop_data, void *user_data);
00209
00222 int eloop_cancel_timeout(eloop_timeout_handler handler,
00223 void *eloop_data, void *user_data);
00224
00243 int eloop_register_signal(int sig, eloop_signal_handler handler,
00244 void *user_data);
00245
00268 int eloop_register_signal_terminate(eloop_signal_handler handler,
00269 void *user_data);
00270
00293 int eloop_register_signal_reconfig(eloop_signal_handler handler,
00294 void *user_data);
00295
00304 void eloop_run(void);
00305
00313 void eloop_terminate(void);
00314
00322 void eloop_destroy(void);
00323
00334 int eloop_terminated(void);
00335
00343 void eloop_wait_for_read_sock(int sock);
00344
00350 void * eloop_get_user_data(void);
00351
00352 #endif
00353