This graph shows which files directly or indirectly include this file:
Go to the source code of this file.
Defines | |
#define | ELOOP_ALL_CTX (void *) -1 |
eloop_cancel_timeout() magic number to match all timeouts | |
Typedefs | |
typedef void(* | eloop_sock_handler )(int sock, void *eloop_ctx, void *sock_ctx) |
eloop socket event callback type | |
typedef void(* | eloop_event_handler )(void *eloop_data, void *user_ctx) |
eloop generic event callback type | |
typedef void(* | eloop_timeout_handler )(void *eloop_data, void *user_ctx) |
eloop timeout event callback type | |
typedef void(* | eloop_signal_handler )(int sig, void *eloop_ctx, void *signal_ctx) |
eloop signal event callback type | |
Enumerations | |
enum | eloop_event_type { EVENT_TYPE_READ = 0, EVENT_TYPE_WRITE, EVENT_TYPE_EXCEPTION } |
eloop socket event type for eloop_register_sock() More... | |
Functions | |
int | eloop_init (void *user_data) |
Initialize global event loop data. | |
int | eloop_register_read_sock (int sock, eloop_sock_handler handler, void *eloop_data, void *user_data) |
Register handler for read events. | |
void | eloop_unregister_read_sock (int sock) |
Unregister handler for read events. | |
int | eloop_register_sock (int sock, eloop_event_type type, eloop_sock_handler handler, void *eloop_data, void *user_data) |
Register handler for socket events. | |
void | eloop_unregister_sock (int sock, eloop_event_type type) |
Unregister handler for socket events. | |
int | eloop_register_event (void *event, size_t event_size, eloop_event_handler handler, void *eloop_data, void *user_data) |
Register handler for generic events. | |
void | eloop_unregister_event (void *event, size_t event_size) |
Unregister handler for a generic event. | |
int | eloop_register_timeout (unsigned int secs, unsigned int usecs, eloop_timeout_handler handler, void *eloop_data, void *user_data) |
Register timeout. | |
int | eloop_cancel_timeout (eloop_timeout_handler handler, void *eloop_data, void *user_data) |
Cancel timeouts. | |
int | eloop_register_signal (int sig, eloop_signal_handler handler, void *user_data) |
Register handler for signals. | |
int | eloop_register_signal_terminate (eloop_signal_handler handler, void *user_data) |
Register handler for terminate signals. | |
int | eloop_register_signal_reconfig (eloop_signal_handler handler, void *user_data) |
Register handler for reconfig signals. | |
void | eloop_run (void) |
Start the event loop. | |
void | eloop_terminate (void) |
Terminate event loop. | |
void | eloop_destroy (void) |
Free any resources allocated for the event loop. | |
int | eloop_terminated (void) |
Check whether event loop has been terminated. | |
void | eloop_wait_for_read_sock (int sock) |
Wait for a single reader. | |
void * | eloop_get_user_data (void) |
Get global user data. |
Alternatively, this software may be distributed under the terms of BSD license.
See README and COPYING for more details.
This file defines an event loop interface that supports processing events from registered timeouts (i.e., do something after N seconds), sockets (e.g., a new packet available for reading), and signals. eloop.c is an implementation of this interface using select() and sockets. This is suitable for most UNIX/POSIX systems. When porting to other operating systems, it may be necessary to replace that implementation with OS specific mechanisms.
Definition in file eloop.h.
|
eloop generic event callback type
|
|
eloop signal event callback type
|
|
eloop socket event callback type
|
|
eloop timeout event callback type
|
|
eloop socket event type for eloop_register_sock()
|
|
Cancel timeouts.
|
|
Free any resources allocated for the event loop. After calling eloop_destroy(), other eloop_* functions must not be called before re-running eloop_init(). |
|
Get global user data.
|
|
Initialize global event loop data.
|
|
Register handler for generic events.
In case of Windows implementation (eloop_win.c), event pointer is of HANDLE type, i.e., void*. The callers are likely to have 'HANDLE h' type variable, and they would call this function with eloop_register_event(h, sizeof(h), ...). Definition at line 191 of file eloop_win.c. |
|
Register handler for read events.
Definition at line 177 of file eloop.c. Here is the call graph for this function: |
|
Register handler for signals.
Signals are 'global' events and there is no local eloop_data pointer like with other handlers. The global user_data pointer registered with eloop_init() will be used as eloop_ctx for signal handlers. |
|
Register handler for reconfig signals.
Signals are 'global' events and there is no local eloop_data pointer like with other handlers. The global user_data pointer registered with eloop_init() will be used as eloop_ctx for signal handlers. This function is a more portable version of eloop_register_signal() since the knowledge of exact details of the signals is hidden in eloop implementation. In case of operating systems using signal(), this function registers a handler for SIGHUP. Definition at line 403 of file eloop.c. Here is the call graph for this function: |
|
Register handler for terminate signals.
Signals are 'global' events and there is no local eloop_data pointer like with other handlers. The global user_data pointer registered with eloop_init() will be used as eloop_ctx for signal handlers. This function is a more portable version of eloop_register_signal() since the knowledge of exact details of the signals is hidden in eloop implementation. In case of operating systems using signal(), this function registers handlers for SIGINT and SIGTERM. Definition at line 393 of file eloop.c. Here is the call graph for this function: |
|
Register handler for socket events.
|
|
Register timeout.
Definition at line 227 of file eloop.c. Here is the call graph for this function: |
|
Start the event loop. Start the event loop and continue running as long as there are any registered event handlers. This function is run after event loop has been initialized with event_init() and one or more events have been registered. Definition at line 414 of file eloop.c. Here is the call graph for this function: |
|
Terminate event loop. Terminate event loop even if there are registered events. This can be used to request the program to be terminated cleanly. |
|
Check whether event loop has been terminated.
|
|
Unregister handler for a generic event.
Definition at line 220 of file eloop_win.c. |
|
Unregister handler for read events.
Definition at line 185 of file eloop.c. Here is the call graph for this function: |
|
Unregister handler for socket events.
|
|
Wait for a single reader.
|