#include <execution.h>
Public Attributes | |
Executor *(* | open_executor )() |
Scheduler *(* | open_scheduler )(Executor *executor, Channel *channel) |
Create a new Scheduler handle for (possibly periodic) delivery of a single message. | |
void(* | set_scheduler_timing )(Scheduler *scheduler, uint16_t interval, uint32_t start) |
Sets the timing parameters for a particular scheduled message. | |
void(* | set_scheduler_message )(Scheduler *scheduler, Message *message) |
Sets the message that will be delivered at the scheduled time(s). | |
void(* | set_scheduler_filter )(Scheduler *scheduler, Scheduler_filter_time when, sched_callback fn, void *state) |
Sets optional callback functions to occur immediately before or after scheduled message delivery. | |
void(* | start_scheduler )(Scheduler *scheduler) |
Enable scheduled message delivery for the given scheduler. | |
void(* | stop_scheduler )(Scheduler *scheduler) |
void(* | manage_conection )(Executor *executor, Connection *connection) |
Manage message delivery on the given connection. | |
Execution_Controller *(* | get_controller )() |
Get the Execution_Controller instance for this Execution implementation. |
Definition at line 75 of file execution.h.
Get the Execution_Controller instance for this Execution implementation.
It is typically not necessary for application components themselves to need access to the controller functions. Use with caution.
void(* execution::manage_conection)(Executor *executor, Connection *connection) |
Manage message delivery on the given connection.
Once handed off via manage_connection,
messages will be delivered to/from the given connection via the policy and capabilities of the given Executor.
This call is non-blocking. It can be assumed that the given connection will be periodically updated (messages delivered) as part of some loop or thread that persists after this call returns.
executor | Executor that will be used to deliver messages on the given connection | |
connection | Connection to manage. |
Scheduler*(* execution::open_scheduler)(Executor *executor, Channel *channel) |
Create a new Scheduler handle for (possibly periodic) delivery of a single message.
executor | Executor that will execute the message delivery. |
void(* execution::set_scheduler_filter)(Scheduler *scheduler, Scheduler_filter_time when, sched_callback fn, void *state) |
Sets optional callback functions to occur immediately before or after scheduled message delivery.
Upon delivery/execution, every callback defined here will be invoked.
scheduler | The Scheduler resposible for message delivery. | |
when | When (before or after) the filter is called with respect to message delivery. | |
fn | Filter function to call pre or post message delivery. | |
state | Arbitraty, optional, opaque state. |
void(* execution::set_scheduler_message)(Scheduler *scheduler, Message *message) |
Sets the message that will be delivered at the scheduled time(s).
The current message will be sent at the next scheduled delivery time, and all subsequent scheduled deliveries until replaced via another call to set a new message.
Tip: set_scheduler_filter() may be used to register a callback to be invoked immediately before or immediately after message delivery. This can be used to tie message delivery to a message update routine.
scheduled | The scheduler we want to handle the message delivery. | |
message | The message we want delivered. |
void(* execution::set_scheduler_timing)(Scheduler *scheduler, uint16_t interval, uint32_t start) |
Sets the timing parameters for a particular scheduled message.
scheduler | The scheduler we want to set the timing parameters for | |
interval | Time between periodic message delivery. If zero, it is assumed that message delivery is one-time and not periodic. | |
start | Number of miliseconds since the epoch where scheduled delivery is supposed to start. If in the past, "now" is assumed. |
void(* execution::start_scheduler)(Scheduler *scheduler) |
Enable scheduled message delivery for the given scheduler.
Until the scheduler is started, no messages will be processed. Starting the scheduler will start the timers, so to speak, and allow the messages to be delivered at the specified time and interval.
scheduler | The scheduler that will now begin timed delivery |