00001 00002 #ifndef CConsumer_h 00003 #define CConsumer_h 1 00004 00005 #include "jic/exc/CCreateException.hpp" 00006 00007 // CFnConsumer 00008 #include "jic/task/CFnConsumer.hpp" 00009 // CChainTask 00010 #include "jic/task/CChainTask.hpp" 00011 00012 namespace TASK { 00013 00014 // Recibe mensajes y los consume (solo hace gets). 00015 // El trabajo realmente lo hace un objeto función. 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 CConsumer : public CChainTask<MessageType> 00022 { 00023 00024 public: 00025 CConsumer(); 00026 00027 // El task no libera el objeto funcion, solo se queda con 00028 // su "referencia". 00029 CConsumer (const CFnConsumer<MessageType> *fnConsumer, std::string strName = "Consumidor", int nThreads = 1) throw (CCreateException); 00030 00031 ~CConsumer(); 00032 00033 // Additional Public Declarations 00034 00035 protected: 00036 00037 virtual void specificStep () /*throw (CTaskException)*/; 00038 00039 // Additional Protected Declarations 00040 00041 private: 00042 CConsumer(const CConsumer< MessageType > &right); 00043 00044 CConsumer< MessageType > & operator=(const CConsumer< MessageType > &right); 00045 00046 // Additional Private Declarations 00047 00048 private: 00049 // Data Members for Class Attributes 00050 00051 CFnConsumer<MessageType> *m_fnConsumer; 00052 00053 // Data Members for Associations 00054 00055 // Additional Implementation Declarations 00056 00057 }; 00058 00059 // Parameterized Class TASK::CConsumer 00060 00061 } // namespace TASK 00062 00063 #if defined (ACE_TEMPLATES_REQUIRE_SOURCE) 00064 #include "CConsumer.cpp" 00065 #endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ 00066 00067 #endif