00001
00023 #ifndef EXECUTION_H_
00024 #define EXECUTION_H_
00025
00026 #ifdef __cplusplus
00027 extern "C" {
00028 #endif
00029
00030 #include "messaging.h"
00031
00041 typedef struct scheduler Scheduler;
00042
00044 typedef struct executor Executor;
00045
00046 typedef void (*sched_callback)(Message *message, void *state);
00047
00049 typedef enum scheduler_filter_time {
00050 BEFORE,
00051 AFTER
00052 } Scheduler_filter_time;
00053
00063 typedef struct execution_controller {
00068 void (*run)(Executor * executor);
00069
00071 void (*stop)(Executor * executor);
00072 } Execution_Controller;
00073
00075 typedef struct execution {
00076 Executor *(*open_executor)();
00077
00081 Scheduler *(*open_scheduler)(Executor * executor, Channel * channel);
00082
00091 void (*set_scheduler_timing)(Scheduler * scheduler, uint16_t interval,
00092 uint32_t start);
00093
00108 void (*set_scheduler_message)(Scheduler *scheduler, Message *message);
00109
00119 void (*set_scheduler_filter)(Scheduler *scheduler,
00120 Scheduler_filter_time when, sched_callback fn, void *state);
00121
00130 void (*start_scheduler)(Scheduler *scheduler);
00131
00132 void (*stop_scheduler)(Scheduler *scheduler);
00133
00147 void (*manage_conection)(Executor *executor, Connection *connection);
00148
00155 Execution_Controller * (*get_controller)();
00156
00157 } Execution;
00158
00159 #ifdef __cplusplus
00160 }
00161 #endif
00162
00171 #endif