RaftLib  0.3a
C++ Stream Processing Template Library
schedule.hpp
1 
20 #ifndef _SCHEDULE_HPP_
21 #define _SCHEDULE_HPP_ 1
22 #include <setjmp.h>
23 #include "signalvars.hpp"
24 #include "systemsignalhandler.hpp"
25 #include "rafttypes.hpp"
26 #include <set>
27 #include "kernelkeeper.tcc"
28 
29 namespace raft {
30  class kernel;
31 }
32 class Map;
33 
34 class Schedule
35 {
36 public:
37 
45  Schedule( Map &map );
46 
50  virtual ~Schedule();
51 
57  virtual void start() = 0;
58 
59 
64  virtual void init();
65 
77  static bool kernelRun( raft::kernel * const kernel,
78  volatile bool &finished,
79  jmp_buf *gotostate = nullptr,
80  jmp_buf *kernel_state = nullptr );
81 
91  void scheduleKernel( raft::kernel * const kernel );
92 protected:
93  virtual void handleSchedule( raft::kernel * const kernel ) = 0;
104  static raft::kstatus checkSystemSignal( raft::kernel * const kernel,
105  void *data,
107 
117  static raft::kstatus quitHandler( FIFO &fifo,
118  raft::kernel *kernel,
119  const raft::signal signal,
120  void *data );
121 
122 
123  static void invalidateOutputPorts( raft::kernel *kernel );
124 
132  static bool kernelHasInputData( raft::kernel *kernel );
133 
143  static bool kernelHasNoInputPorts( raft::kernel *kernel );
144 
149 
151  kernelkeeper &kernel_set;
152  kernelkeeper &source_kernels;
153  kernelkeeper &dst_kernels;
154 private:
155 // Map &map_ref;
156 };
157 #endif /* END _SCHEDULE_HPP_ */
Definition: systemsignalhandler.hpp:46
static bool kernelRun(raft::kernel *const kernel, volatile bool &finished, jmp_buf *gotostate=nullptr, jmp_buf *kernel_state=nullptr)
Definition: schedule.cpp:156
virtual ~Schedule()
Definition: schedule.cpp:17
static raft::kstatus checkSystemSignal(raft::kernel *const kernel, void *data, SystemSignalHandler &handlers)
Definition: schedule.cpp:57
static bool kernelHasNoInputPorts(raft::kernel *kernel)
Definition: schedule.cpp:141
kernelkeeper & kernel_set
Definition: schedule.hpp:151
virtual void start()=0
Definition: map.hpp:47
virtual void init()
Definition: schedule.cpp:23
static raft::kstatus quitHandler(FIFO &fifo, raft::kernel *kernel, const raft::signal signal, void *data)
Definition: schedule.cpp:30
static bool kernelHasInputData(raft::kernel *kernel)
Definition: schedule.cpp:120
Schedule(Map &map)
Definition: schedule.cpp:9
Definition: schedule.hpp:34
Definition: kernel.hpp:57
Definition: globalmap.cpp:3
SystemSignalHandler handlers
Definition: schedule.hpp:148
Definition: fifo.hpp:48
void scheduleKernel(raft::kernel *const kernel)
Definition: schedule.cpp:93