00001 00002 #ifndef CTasksControler_h 00003 #define CTasksControler_h 1 00004 00005 #include <list> 00006 00007 // CObserver 00008 #include "jic/base/CObserver.hpp" 00009 // CControler 00010 #include "jic/base/CControler.hpp" 00011 // CTaskException 00012 #include "jic/exc/CTaskException.hpp" 00013 00014 namespace TASK { 00015 class CTask; 00016 00017 } // namespace TASK 00018 00019 namespace TASK { 00020 00021 typedef std::list<CTask *> ListTasks; 00022 00023 // Controlador de tareas. 00024 // Tiene la responsabilidad de controlar las tareas que se 00025 // han registrado con él. 00026 // Toda tarea tiene un estado. Cuando se crea se crea con 00027 // el estado not working. 00028 00029 class CTasksControler : public CControler, 00030 public CObserver 00031 { 00032 00033 public: 00034 CTasksControler(); 00035 00036 CTasksControler (const std::string &strName); 00037 00038 virtual ~CTasksControler(); 00039 00040 virtual void start (); 00041 00042 virtual void stop (); 00043 00044 void registerTask (CTask *pTask); 00045 00046 virtual void update (CStateObservable& obj); 00047 00048 // Additional Public Declarations 00049 00050 protected: 00051 00052 CTask * findTaskFromState (CStateObservable &state) throw (CTaskException); 00053 00054 bool existsTask (CTask *pTask); 00055 00056 // Data Members for Associations 00057 00058 ListTasks m_listTasks; 00059 00060 // Additional Protected Declarations 00061 00062 private: 00063 CTasksControler(const CTasksControler &right); 00064 00065 CTasksControler & operator=(const CTasksControler &right); 00066 00067 // Additional Private Declarations 00068 00069 private: 00070 // Data Members for Class Attributes 00071 00072 std::string m_strName; 00073 00074 // Additional Implementation Declarations 00075 00076 }; 00077 00078 // Class TASK::CTasksControler 00079 00080 } // namespace TASK 00081 00082 #endif