The tevent low-level API. More...
| Modules | |
| The tevent request functions. | |
| This represents an async request being processed by callbacks via an event context. | |
| The tevent helper functiions | |
| The tevent queue functions | |
| 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. | |
| Defines | |
| #define | TEVENT_FD_READ 1 | 
| Monitor a file descriptor for write availability. | |
| #define | TEVENT_FD_WRITE 2 | 
| Monitor a file descriptor for data to be read. | |
| #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. | |
| Enumerations | |
| enum | tevent_debug_level | 
| Debug level of tevent. | |
| Functions | |
| struct tevent_context * | tevent_context_init (TALLOC_CTX *mem_ctx) | 
| Create a event_context structure. | |
| struct tevent_context * | tevent_context_init_byname (TALLOC_CTX *mem_ctx, const char *name) | 
| Create a event_context structure and name it. | |
| const char ** | tevent_backend_list (TALLOC_CTX *mem_ctx) | 
| List available backends. | |
| void | tevent_set_default_backend (const char *backend) | 
| Set the default tevent backent. | |
| 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. | |
| 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. | |
| struct tevent_immediate * | tevent_create_immediate (TALLOC_CTX *mem_ctx) | 
| Initialize an immediate event object. | |
| 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. | |
| 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. | |
| int | tevent_loop_once (struct tevent_context *ev) | 
| Pass a single time through the mainloop. | |
| int | tevent_loop_wait (struct tevent_context *ev) | 
| Run the mainloop. | |
| 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. | |
| void | tevent_fd_set_auto_close (struct tevent_fd *fde) | 
| Automatically close the file descriptor when the tevent_fd is freed. | |
| uint16_t | tevent_fd_get_flags (struct tevent_fd *fde) | 
| Return the flags set on this file descriptor event. | |
| void | tevent_fd_set_flags (struct tevent_fd *fde, uint16_t flags) | 
| Set flags on a file descriptor event. | |
| bool | tevent_signal_support (struct tevent_context *ev) | 
| Query whether tevent supports signal handling. | |
| int | tevent_set_debug (struct tevent_context *ev, void(*debug)(void *context, enum tevent_debug_level level, const char *fmt, va_list ap) PRINTF_ATTRIBUTE(3, 0), void *context) | 
| Set destination for tevent debug messages. | |
| int | tevent_set_debug_stderr (struct tevent_context *ev) | 
| Designate stderr for debug message output. | |
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.
| 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 | |||
| ) |  [read] | 
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 | |||
| ) |  [read] | 
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 | |||
| ) |  [read] | 
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 | ) |  [read] | 
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 | |||
| ) |  [read] | 
Create a event_context structure and name it.
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 for the tevent context. | 
| struct tevent_immediate* tevent_create_immediate | ( | TALLOC_CTX * | mem_ctx | ) |  [read] | 
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 | 
| 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 | 
| 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, | |
| void(*)(void *context, enum tevent_debug_level level, const char *fmt, va_list ap) PRINTF_ATTRIBUTE debug(3, 0) | , | |||
| void * | context | |||
| ) | 
Set destination for tevent debug messages.
| [in] | ev | Event context to debug | 
| [in] | debug | Function to handle output printing | 
| 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 backent.
| [in] | backend | The name of the backend to set. | 
| bool tevent_signal_support | ( | struct tevent_context * | ev | ) | 
Query whether tevent supports signal handling.
| [in] | ev | An initialized tevent context | 
 1.6.1
 1.6.1