00001 00002 #ifndef CProcessor_h 00003 #define CProcessor_h 1 00004 00005 #include "jic/exc/CCreateException.hpp" 00006 00007 // CFnProcessor 00008 #include "jic/task/CFnProcessor.hpp" 00009 // CChainTask 00010 #include "jic/task/CChainTask.hpp" 00011 00012 namespace TASK { 00013 00014 // Recibe, procesa y envia mensajes (hace get y put). 00015 // Tendra un objeto funcion que realice el trabajo. 00016 // Notas: Al solo soportarse de momento 1 solo controlador 00017 // por cadena, en el constructor no se puede pasar un 00018 // controlador. 00019 00020 template <class MessageType> 00021 class CProcessor : public CChainTask<MessageType> 00022 { 00023 00024 public: 00025 CProcessor(); 00026 00027 // El task no libera el objeto funcion, solo se queda con 00028 // su "referencia". 00029 CProcessor (const CFnProcessor<MessageType> *fnProcessor, std::string strName = "Procesador", int nThreads = 1) throw (CCreateException); 00030 00031 ~CProcessor(); 00032 00033 // Additional Public Declarations 00034 00035 protected: 00036 00037 virtual void specificStep () /*throw (CTaskException) */; 00038 00039 // Additional Protected Declarations 00040 00041 private: 00042 CProcessor(const CProcessor< MessageType > &right); 00043 00044 CProcessor< MessageType > & operator=(const CProcessor< MessageType > &right); 00045 00046 // Additional Private Declarations 00047 00048 private: 00049 // Data Members for Class Attributes 00050 00051 CfnProcessor<MessageType> *m_fnProcessor; 00052 00053 // Data Members for Associations 00054 00055 // Additional Implementation Declarations 00056 00057 }; 00058 00059 // Parameterized Class TASK::CProcessor 00060 00061 } // namespace TASK 00062 00063 #if defined (ACE_TEMPLATES_REQUIRE_SOURCE) 00064 #include "CProcessor.cpp" 00065 #endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ 00066 00067 #endif