dol: initial dol commit
[jump.git] / dol / src / dol / visitor / PipeAndFilter / lib / Scheduler.h
1 #ifndef _SCHEDULER_H_
2 #define _SCHEDULER_H_
3
4 #include <iostream>
5 #include <list>
6 #include <map>
7 #include "Event.h"
8 #include "ProcessWrapper.h"
9
10 class Scheduler
11 {
12     public:
13         Scheduler();
14         virtual ~Scheduler();
15
16         void registerProcess(ProcessWrapper *process);
17         void run();
18         void runProcessWrapper(ProcessWrapper *process);
19         void detachProcess(ProcessWrapper *process);
20         void schedule();
21
22     protected:
23         Mutex *_listsMutex;
24         Condition *_listsCondition;
25         Mutex *_mapsMutex;
26         Condition *_mapsCondition;
27         std::map<ProcessWrapper*, pthread_t* > *_processMap;
28         std::map<ProcessWrapper*, Event* > *_notificationEventMap;
29         std::list<ProcessWrapper* > *_scheduleList;
30         std::list<ProcessWrapper* > *_detachList;
31         bool _stopScheduler;
32         bool _allStarted;
33 };
34
35 #endif