22 #ifndef EVENTSWITCH_H_
23 #define EVENTSWITCH_H_
27 #include <ibrcommon/Exceptions.h>
28 #include <ibrcommon/thread/Mutex.h>
29 #include <ibrcommon/thread/Conditional.h>
30 #include <ibrcommon/TimeMeasurement.h>
52 virtual const std::string getName()
const;
64 class Worker :
public ibrcommon::JoinableThread
74 virtual void __cancellation()
throw ();
79 ibrcommon::TimeMeasurement _tm;
84 class WatchDog :
public ibrcommon::JoinableThread
87 WatchDog(
EventSwitch &sw, std::list<Worker*> &workers);
95 virtual void __cancellation()
throw ();
99 std::list<Worker*> &_workers;
102 ibrcommon::Conditional _cond;
105 ibrcommon::Conditional _queue_cond;
106 std::queue<Task*> _queue;
107 std::queue<Task*> _prio_queue;
108 std::queue<Task*> _low_queue;
111 std::list<Worker*> _wlist;
113 ibrcommon::TimeMeasurement _tm;
116 void process(ibrcommon::TimeMeasurement &tm,
bool &inprogress,
bool profiling);
126 void loop(
size_t threads,
bool profiling =
false);
static EventSwitch & getInstance()
virtual void componentUp()
static void queue(EventProcessor &proc, Event *evt)
void loop(size_t threads, bool profiling=false)
virtual void componentDown()