dol: initial dol commit
[jump.git] / dol / src / dol / visitor / PipeAndFilter / lib / Scheduler.h
diff --git a/dol/src/dol/visitor/PipeAndFilter/lib/Scheduler.h b/dol/src/dol/visitor/PipeAndFilter/lib/Scheduler.h
new file mode 100644 (file)
index 0000000..791f6f0
--- /dev/null
@@ -0,0 +1,35 @@
+#ifndef _SCHEDULER_H_
+#define _SCHEDULER_H_
+
+#include <iostream>
+#include <list>
+#include <map>
+#include "Event.h"
+#include "ProcessWrapper.h"
+
+class Scheduler
+{
+    public:
+        Scheduler();
+        virtual ~Scheduler();
+
+        void registerProcess(ProcessWrapper *process);
+        void run();
+        void runProcessWrapper(ProcessWrapper *process);
+        void detachProcess(ProcessWrapper *process);
+        void schedule();
+
+    protected:
+        Mutex *_listsMutex;
+        Condition *_listsCondition;
+        Mutex *_mapsMutex;
+        Condition *_mapsCondition;
+        std::map<ProcessWrapper*, pthread_t* > *_processMap;
+        std::map<ProcessWrapper*, Event* > *_notificationEventMap;
+        std::list<ProcessWrapper* > *_scheduleList;
+        std::list<ProcessWrapper* > *_detachList;
+        bool _stopScheduler;
+        bool _allStarted;
+};
+
+#endif