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

CDataBlock.hpp

Go to the documentation of this file.
00001 
00002 #ifndef CDataBlock_h
00003 #define CDataBlock_h 1
00004 
00005 namespace TASK {
00006 
00007   //    Redefinicion del objeto de ACE
00008 
00009   typedef ACE_Data_Block ACE_Data_Block;
00010 
00011   //    Define un contenedor para los datos enviados
00012   //    a las colas de los objetos activos.
00013   //    Tiene un conteo de referencias de forma que
00014   //    el objeto de datos solo se destruye cuando
00015   //    estas referencias llegan a cero
00016   //    Para incrementar el numero de referencias se
00017   //    usa el metodo duplicate() de la clase base
00018   //    Para decrementar el numero de referencias se
00019   //    usa el metodo release() de la clase base
00020   //    NUNCA DEBE HACERSE DELETE DE ESTOS OBJETOS
00021 
00022   template <class MessageType>
00023   class CDataBlock : public ACE_Data_Block  
00024   {
00025 
00026     public:
00027         CDataBlock();
00028 
00029         CDataBlock (MessageType *data);
00030 
00031         ~CDataBlock();
00032 
00033         const MessageType * get_data () const;
00034 
00035       // Additional Public Declarations
00036 
00037     protected:
00038       // Additional Protected Declarations
00039 
00040     private:
00041         CDataBlock(const CDataBlock< MessageType > &right);
00042 
00043         CDataBlock< MessageType > & operator=(const CDataBlock< MessageType > &right);
00044 
00045       // Additional Private Declarations
00046 
00047     private: 
00048       // Data Members for Class Attributes
00049 
00050         MessageType *m_data;
00051 
00052       // Additional Implementation Declarations
00053         // Esta clase interna a Data_Block define la politica de sincronismo
00054         // que tiene el contador de referencias de esta clase
00055         class Lock : public ACE_Lock_Adapter< ACE_Mutex >
00056         {
00057         public:
00058 
00059           Lock() {};
00060           ~Lock() {};
00061           int destroy() { delete this; return 0; };
00062         protected:
00063         };
00064   };
00065 
00066   // Parameterized Class TASK::CDataBlock 
00067 
00068   template <class MessageType>
00069   inline const MessageType * CDataBlock<MessageType>::get_data () const
00070   {
00071     return m_data;
00072   }
00073 
00074 } // namespace TASK
00075 
00076 #ifdef ACE_TEMPLATES_REQUIRE_SOURCE
00077 #include "CDataBlock.cpp"
00078 #endif
00079 
00080 #endif

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