tevent
0.9.31
|
The tevent low-level API. More...
Modules | |
The tevent request functions. | |
A tevent_req represents an asynchronous computation. | |
The tevent helper functions | |
The tevent queue functions | |
A tevent_queue is used to queue up async requests that must be serialized. | |
The tevent operation functions | |
The following structure and registration functions are exclusively needed for people writing and pluggin a different event engine. | |
The tevent compatibility functions | |
The following definitions are usueful only for compatibility with the implementation originally developed within the samba4 code and will be soon removed. | |
Macros | |
#define | TEVENT_FD_READ 1 |
Monitor a file descriptor for data to be read. | |
#define | TEVENT_FD_WRITE 2 |
Monitor a file descriptor for writeability. | |
#define | TEVENT_FD_WRITEABLE(fde) tevent_fd_set_flags(fde, tevent_fd_get_flags(fde) | TEVENT_FD_WRITE) |
Convenience function for declaring a tevent_fd writable. | |
#define | TEVENT_FD_READABLE(fde) tevent_fd_set_flags(fde, tevent_fd_get_flags(fde) | TEVENT_FD_READ) |
Convenience function for declaring a tevent_fd readable. | |
#define | TEVENT_FD_NOT_WRITEABLE(fde) tevent_fd_set_flags(fde, tevent_fd_get_flags(fde) & ~TEVENT_FD_WRITE) |
Convenience function for declaring a tevent_fd non-writable. | |
#define | TEVENT_FD_NOT_READABLE(fde) tevent_fd_set_flags(fde, tevent_fd_get_flags(fde) & ~TEVENT_FD_READ) |
Convenience function for declaring a tevent_fd non-readable. | |
Typedefs | |
typedef void(* | tevent_fd_handler_t) (struct tevent_context *ev, struct tevent_fd *fde, uint16_t flags, void *private_data) |
Called when a file descriptor monitored by tevent has data to be read or written on it. | |
typedef void(* | tevent_fd_close_fn_t) (struct tevent_context *ev, struct tevent_fd *fde, int fd, void *private_data) |
Called when tevent is ceasing the monitoring of a file descriptor. | |
typedef void(* | tevent_timer_handler_t) (struct tevent_context *ev, struct tevent_timer *te, struct timeval current_time, void *private_data) |
Called when a tevent timer has fired. | |
typedef void(* | tevent_immediate_handler_t) (struct tevent_context *ctx, struct tevent_immediate *im, void *private_data) |
Called when a tevent immediate event is invoked. | |
typedef void(* | tevent_signal_handler_t) (struct tevent_context *ev, struct tevent_signal *se, int signum, int count, void *siginfo, void *private_data) |
Called after tevent detects the specified signal. | |
typedef void(* | tevent_debug_fn) (void *context, enum tevent_debug_level level, const char *fmt, va_list ap) |
The tevent debug callbac. More... | |
Enumerations | |
enum | tevent_debug_level |
Debug level of tevent. | |
enum | tevent_trace_point { TEVENT_TRACE_BEFORE_WAIT, TEVENT_TRACE_AFTER_WAIT, TEVENT_TRACE_BEFORE_LOOP_ONCE, TEVENT_TRACE_AFTER_LOOP_ONCE } |
Functions | |
struct tevent_context * | tevent_context_init (TALLOC_CTX *mem_ctx) |
Create a event_context structure. More... | |
struct tevent_context * | tevent_context_init_byname (TALLOC_CTX *mem_ctx, const char *name) |
Create a event_context structure and select a specific backend. More... | |
struct tevent_context * | tevent_context_init_ops (TALLOC_CTX *mem_ctx, const struct tevent_ops *ops, void *additional_data) |
Create a custom event context. More... | |
const char ** | tevent_backend_list (TALLOC_CTX *mem_ctx) |
List available backends. More... | |
void | tevent_set_default_backend (const char *backend) |
Set the default tevent backend. More... | |
struct tevent_fd * | tevent_add_fd (struct tevent_context *ev, TALLOC_CTX *mem_ctx, int fd, uint16_t flags, tevent_fd_handler_t handler, void *private_data) |
Add a file descriptor based event. More... | |
struct tevent_timer * | tevent_add_timer (struct tevent_context *ev, TALLOC_CTX *mem_ctx, struct timeval next_event, tevent_timer_handler_t handler, void *private_data) |
Add a timed event. More... | |
void | tevent_update_timer (struct tevent_timer *te, struct timeval next_event) |
Set the time a tevent_timer fires. More... | |
struct tevent_immediate * | tevent_create_immediate (TALLOC_CTX *mem_ctx) |
Initialize an immediate event object. More... | |
void | tevent_schedule_immediate (struct tevent_immediate *im, struct tevent_context *ctx, tevent_immediate_handler_t handler, void *private_data) |
Schedule an event for immediate execution. More... | |
struct tevent_signal * | tevent_add_signal (struct tevent_context *ev, TALLOC_CTX *mem_ctx, int signum, int sa_flags, tevent_signal_handler_t handler, void *private_data) |
Add a tevent signal handler. More... | |
size_t | tevent_num_signals (void) |
the number of supported signals More... | |
size_t | tevent_sa_info_queue_count (void) |
the number of pending realtime signals More... | |
int | tevent_loop_once (struct tevent_context *ev) |
Pass a single time through the mainloop. More... | |
int | tevent_loop_wait (struct tevent_context *ev) |
Run the mainloop. More... | |
void | tevent_fd_set_close_fn (struct tevent_fd *fde, tevent_fd_close_fn_t close_fn) |
Assign a function to run when a tevent_fd is freed. More... | |
void | tevent_fd_set_auto_close (struct tevent_fd *fde) |
Automatically close the file descriptor when the tevent_fd is freed. More... | |
uint16_t | tevent_fd_get_flags (struct tevent_fd *fde) |
Return the flags set on this file descriptor event. More... | |
void | tevent_fd_set_flags (struct tevent_fd *fde, uint16_t flags) |
Set flags on a file descriptor event. More... | |
bool | tevent_signal_support (struct tevent_context *ev) |
Query whether tevent supports signal handling. More... | |
int | tevent_set_debug (struct tevent_context *ev, tevent_debug_fn debug, void *context) |
Set destination for tevent debug messages. More... | |
int | tevent_set_debug_stderr (struct tevent_context *ev) |
Designate stderr for debug message output. More... | |
void | tevent_set_trace_callback (struct tevent_context *ev, tevent_trace_callback_t cb, void *private_data) |
Register a callback to be called at certain trace points. More... | |
void | tevent_get_trace_callback (struct tevent_context *ev, tevent_trace_callback_t *cb, void *private_data) |
Retrieve the current trace callback. More... | |
The tevent low-level API.
This API provides the public interface to manage events in the tevent mainloop. Functions are provided for managing low-level events such as timer events, fd events and signal handling.
typedef void(* tevent_debug_fn) (void *context, enum tevent_debug_level level, const char *fmt, va_list ap) |
The tevent debug callbac.
[in] | context | The memory context to use. |
[in] | level | The debug level. |
[in] | fmt | The format string. |
[in] | ap | The arguments for the format string. |
enum tevent_trace_point |
struct tevent_fd* tevent_add_fd | ( | struct tevent_context * | ev, |
TALLOC_CTX * | mem_ctx, | ||
int | fd, | ||
uint16_t | flags, | ||
tevent_fd_handler_t | handler, | ||
void * | private_data | ||
) |
Add a file descriptor based event.
[in] | ev | The event context to work on. |
[in] | mem_ctx | The talloc memory context to use. |
[in] | fd | The file descriptor to base the event on. |
[in] | flags | TEVENT_FD_READ or TEVENT_FD_WRITE |
[in] | handler | The callback handler for the event. |
[in] | private_data | The private data passed to the callback handler. |
struct tevent_signal* tevent_add_signal | ( | struct tevent_context * | ev, |
TALLOC_CTX * | mem_ctx, | ||
int | signum, | ||
int | sa_flags, | ||
tevent_signal_handler_t | handler, | ||
void * | private_data | ||
) |
Add a tevent signal handler.
tevent_add_signal() creates a new event for handling a signal the next time through the mainloop. It implements a very simple traditional signal handler whose only purpose is to add the handler event into the mainloop.
[in] | ev | The event context to work on. |
[in] | mem_ctx | The talloc memory context to use. |
[in] | signum | The signal to trap |
[in] | handler | The callback handler for the signal. |
[in] | sa_flags | sigaction flags for this signal handler. |
[in] | private_data | The private data passed to the callback handler. |
struct tevent_timer* tevent_add_timer | ( | struct tevent_context * | ev, |
TALLOC_CTX * | mem_ctx, | ||
struct timeval | next_event, | ||
tevent_timer_handler_t | handler, | ||
void * | private_data | ||
) |
Add a timed event.
[in] | ev | The event context to work on. |
[in] | mem_ctx | The talloc memory context to use. |
[in] | next_event | Timeval specifying the absolute time to fire this event. This is not an offset. |
[in] | handler | The callback handler for the event. |
[in] | private_data | The private data passed to the callback handler. |
const char** tevent_backend_list | ( | TALLOC_CTX * | mem_ctx | ) |
List available backends.
[in] | mem_ctx | The memory context to use. |
struct tevent_context* tevent_context_init | ( | TALLOC_CTX * | mem_ctx | ) |
Create a event_context structure.
This must be the first events call, and all subsequent calls pass this event_context as the first element. Event handlers also receive this as their first argument.
[in] | mem_ctx | The memory context to use. |
struct tevent_context* tevent_context_init_byname | ( | TALLOC_CTX * | mem_ctx, |
const char * | name | ||
) |
Create a event_context structure and select a specific backend.
This must be the first events call, and all subsequent calls pass this event_context as the first element. Event handlers also receive this as their first argument.
[in] | mem_ctx | The memory context to use. |
[in] | name | The name of the backend to use. |
struct tevent_context* tevent_context_init_ops | ( | TALLOC_CTX * | mem_ctx, |
const struct tevent_ops * | ops, | ||
void * | additional_data | ||
) |
Create a custom event context.
[in] | mem_ctx | The memory context to use. |
[in] | ops | The function pointer table of the backend. |
[in] | additional_data | The additional/private data to this instance |
struct tevent_immediate* tevent_create_immediate | ( | TALLOC_CTX * | mem_ctx | ) |
Initialize an immediate event object.
This object can be used to trigger an event to occur immediately after returning from the current event (before any other event occurs)
[in] | mem_ctx | The talloc memory context to use as the parent |
uint16_t tevent_fd_get_flags | ( | struct tevent_fd * | fde | ) |
Return the flags set on this file descriptor event.
[in] | fde | File descriptor event to query |
void tevent_fd_set_auto_close | ( | struct tevent_fd * | fde | ) |
Automatically close the file descriptor when the tevent_fd is freed.
This function calls close(fd) internally.
[in] | fde | File descriptor event to auto-close |
void tevent_fd_set_close_fn | ( | struct tevent_fd * | fde, |
tevent_fd_close_fn_t | close_fn | ||
) |
Assign a function to run when a tevent_fd is freed.
This function is a destructor for the tevent_fd. It does not automatically close the file descriptor. If this is the desired behavior, then it must be performed by the close_fn.
[in] | fde | File descriptor event on which to set the destructor |
[in] | close_fn | Destructor to execute when fde is freed |
void tevent_fd_set_flags | ( | struct tevent_fd * | fde, |
uint16_t | flags | ||
) |
Set flags on a file descriptor event.
[in] | fde | File descriptor event to set |
[in] | flags | Flags to set on the event. See TEVENT_FD_READ and TEVENT_FD_WRITE |
void tevent_get_trace_callback | ( | struct tevent_context * | ev, |
tevent_trace_callback_t * | cb, | ||
void * | private_data | ||
) |
Retrieve the current trace callback.
[in] | ev | Event context |
[out] | cb | Registered trace callback |
[out] | private_data | Registered data to be passed to callback |
int tevent_loop_once | ( | struct tevent_context * | ev | ) |
Pass a single time through the mainloop.
This will process any appropriate signal, immediate, fd and timer events
[in] | ev | The event context to process |
int tevent_loop_wait | ( | struct tevent_context * | ev | ) |
Run the mainloop.
The mainloop will run until there are no events remaining to be processed
[in] | ev | The event context to process |
size_t tevent_num_signals | ( | void | ) |
the number of supported signals
This returns value of the configure time TEVENT_NUM_SIGNALS constant.
The 'signum' argument of tevent_add_signal() must be less than TEVENT_NUM_SIGNALS.
size_t tevent_sa_info_queue_count | ( | void | ) |
the number of pending realtime signals
This returns value of TEVENT_SA_INFO_QUEUE_COUNT.
The tevent internals remember the last TEVENT_SA_INFO_QUEUE_COUNT siginfo_t structures for SA_SIGINFO signals. If the system generates more some signals get lost.
void tevent_schedule_immediate | ( | struct tevent_immediate * | im, |
struct tevent_context * | ctx, | ||
tevent_immediate_handler_t | handler, | ||
void * | private_data | ||
) |
Schedule an event for immediate execution.
This event will occur immediately after returning from the current event (before any other event occurs)
[in] | im | The tevent_immediate object to populate and use |
[in] | ctx | The tevent_context to run this event |
[in] | handler | The event handler to run when this event fires |
[in] | private_data | Data to pass to the event handler |
int tevent_set_debug | ( | struct tevent_context * | ev, |
tevent_debug_fn | debug, | ||
void * | context | ||
) |
Set destination for tevent debug messages.
[in] | ev | Event context to debug |
[in] | debug | Function to handle output printing |
[in] | context | The context to pass to the debug function. |
int tevent_set_debug_stderr | ( | struct tevent_context * | ev | ) |
Designate stderr for debug message output.
[in] | ev | Event context to debug |
void tevent_set_default_backend | ( | const char * | backend | ) |
Set the default tevent backend.
[in] | backend | The name of the backend to set. |
void tevent_set_trace_callback | ( | struct tevent_context * | ev, |
tevent_trace_callback_t | cb, | ||
void * | private_data | ||
) |
Register a callback to be called at certain trace points.
[in] | ev | Event context |
[in] | cb | Trace callback |
[in] | private_data | Data to be passed to callback |
bool tevent_signal_support | ( | struct tevent_context * | ev | ) |
Query whether tevent supports signal handling.
[in] | ev | An initialized tevent context |
void tevent_update_timer | ( | struct tevent_timer * | te, |
struct timeval | next_event | ||
) |
Set the time a tevent_timer fires.
[in] | te | The timer event to reset |
[in] | next_event | Timeval specifying the absolute time to fire this event. This is not an offset. |