00001 00002 #ifndef CMessageBlock_h 00003 #define CMessageBlock_h 1 00004 #include <ace/Message_Block.h> 00005 00006 namespace TASK { 00007 00008 // Redefinicion del objeto de ACE 00009 00010 typedef ACE_Message_Block ACE_Message_Block; 00011 00012 // Define el objeto que se usara para encolar 00013 // informacion entre los distintos objetos 00014 // El constructor sin parametros crea un mensaje 00015 // vacio (sin ningun Data_Block) de tipo MB_HANGUP. 00016 00017 template <class MessageType> 00018 class CMessageBlock : public ACE_Message_Block 00019 { 00020 00021 public: 00022 CMessageBlock(); 00023 00024 CMessageBlock(const CMessageBlock< MessageType > &right); 00025 00026 CMessageBlock (MessageType *pMessage); 00027 00028 virtual ~CMessageBlock(); 00029 00030 CMessageBlock< MessageType > & operator=(const CMessageBlock< MessageType > &right); 00031 00032 const MessageType * get_data () const; 00033 00034 // Additional Public Declarations 00035 00036 protected: 00037 // Additional Protected Declarations 00038 00039 private: 00040 // Additional Private Declarations 00041 00042 private: 00043 // Data Members for Class Attributes 00044 00045 MessageType *m_data; 00046 00047 // Additional Implementation Declarations 00048 00049 }; 00050 00051 // Parameterized Class TASK::CMessageBlock 00052 00053 template <class MessageType> 00054 inline const MessageType * CMessageBlock<MessageType>::get_data () const 00055 { 00056 return m_data; 00057 } 00058 00059 } // namespace TASK 00060 00061 #ifdef ACE_TEMPLATES_REQUIRE_SOURCE 00062 #include "CMessageBlock.cpp" 00063 #endif 00064 00065 #endif