Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  

CTasksChainControler.hpp

Go to the documentation of this file.
00001 
00002 #ifndef CTasksChainControler_h
00003 #define CTasksChainControler_h 1
00004 
00005 // CReportTasksControler
00006 #include "jic/task/CReportTasksControler.hpp"
00007 // CChainTask
00008 #include "jic/task/CChainTask.hpp"
00009 
00010 namespace TASK {
00011 
00012   //    Controlador especifico para cadenas de Tasks.
00013   //
00014   //    Una vez creadas las tasks hay que pasarselas al
00015   //    controlador en orden.
00016   //
00017   //    A partir de una task siempre podremos saber cual es la
00018   //    siguiente, pero al tener este objeto especifico, sabemos
00019   //    que estamos ante una cadena.
00020   //
00021   //    Si cambia el estado de una tarea a error se podrá
00022   //    realiar un tratamiento especifico. El que tiene
00023   //    conocimiento de la tarea es el cliente.
00024   //    Por defecto el tratamiento será parar toda la cadena.
00025   //
00026   //    Nota: Si una tarea intermedia se ha parado, y la cadena
00027   //    completa se para mediante paso de mensajes, el
00028   //    controlador será el responsable de parar la parte final
00029   //    insertando en la cola de entrada del siguiente objeto el
00030   //    mensaje de parada.
00031 
00032   template <class MessageType>
00033   class CTasksChainControler : public CReportTasksControler  
00034   {
00035 
00036     public:
00037         CTasksChainControler();
00038 
00039         CTasksChainControler (const std::string &strName, long nReportPeriod = 0, CTaskReportObject *reportObject = 0);
00040 
00041         ~CTasksChainControler();
00042 
00043         void pushTask (CChainTask<MessageType> *pTask);
00044 
00045         virtual void start ();
00046 
00047         virtual void stop ();
00048 
00049         virtual void update (CStateObservable& obj);
00050 
00051       // Additional Public Declarations
00052 
00053     protected:
00054 
00055         void stopChainFromTask (CTask *pTask);
00056 
00057       // Additional Protected Declarations
00058 
00059     private:
00060         CTasksChainControler(const CTasksChainControler< MessageType > &right);
00061 
00062         CTasksChainControler< MessageType > & operator=(const CTasksChainControler< MessageType > &right);
00063 
00064       // Additional Private Declarations
00065 
00066     private: 
00067       // Additional Implementation Declarations
00068 
00069   };
00070 
00071   // Parameterized Class TASK::CTasksChainControler 
00072 
00073 } // namespace TASK
00074 
00075 #if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
00076 #include "CTasksChainControler.cpp"
00077 #endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
00078 
00079 #endif

Generated on Wed Mar 5 21:31:47 2003 for JIC by doxygen1.3-rc3