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

/home/pauldt/projects/IDEA/IDEA-ALL/IDEA-DEV/Core/Agent/Includes/MessageHandle.hh

Go to the documentation of this file.
00001 // -*- Mode: c++ -*-
00002 //     File: $Source: /home/cvs/ISG-Repository/IDEA-DEV/Core/Agent/Includes/MessageHandle.hh,v $
00003 //      Tag: $Name: DR_01_11_06 $
00004 //      CVS: $Id: MessageHandle.hh,v 1.4 2005/12/30 22:05:33 rijsman Exp $
00005 //     Info: $CVSROOT/IDEA-DEV/COPYRIGHT
00006 
00007 #ifndef HEADER_MESSAGE_HANDLE_HEADER
00008 #define HEADER_MESSAGE_HANDLE_HEADER
00009 
00010 #include "Message.hh"
00011 #include <cassert>
00012 
00013 namespace IDEA
00014 {
00024   class MessageHandle
00025   {
00026   public:
00032     MessageHandle();
00038     MessageHandle( Message* message ):m_Implementation(message) 
00039     {
00040     }
00046     MessageHandle( const MessageHandle& msg ) 
00047     { 
00048       m_Implementation = msg.m_Implementation; 
00049     }
00055     const MessageHandle& operator=(const MessageHandle& other ) 
00056     {  
00057       m_Implementation = other.m_Implementation; 
00058       
00059       return *this; 
00060     }
00065     const MessageData* getData() const 
00066     {  
00067       assert( m_Implementation != 0 ); 
00068 
00069       return m_Implementation->getData(); 
00070     }
00074     const Time& getTime() const 
00075     { 
00076       assert( m_Implementation != 0 ); 
00077 
00078       return m_Implementation->getTime(); 
00079     }
00083     const Message::Type& getType() const 
00084     { 
00085       assert( m_Implementation != 0 ); 
00086       
00087       return m_Implementation->getType(); 
00088     }
00092     Message* getImplementation() const 
00093     { 
00094       return m_Implementation; 
00095     }
00099     MessageHandle clone() const 
00100     { 
00101       assert( m_Implementation != 0 ); return m_Implementation->clone(); 
00102     }
00108     void release() 
00109     { 
00110       delete m_Implementation; 
00111 
00112       m_Implementation = 0; 
00113     }
00114   private:
00115     Message* m_Implementation; 
00116   };
00117 
00118   std::ostream& operator<< ( std::ostream& os, const MessageHandle& message );
00119 
00126   struct earlierTime:
00127     public std::binary_function< MessageHandle,MessageHandle, bool>
00128   {
00129     bool operator()( const MessageHandle& msg1, const MessageHandle& msg2 ) const
00130     {
00131       return msg1.getTime() < msg2.getTime();
00132     }
00133   };
00134 
00141   struct laterTime:
00142     public std::binary_function< MessageHandle,MessageHandle, bool>
00143   {
00144     bool operator()( const MessageHandle& msg1, const MessageHandle& msg2 ) const
00145     {
00146       return msg1.getTime() > msg2.getTime();
00147     }
00148   };
00149 
00150   typedef std::list< MessageHandle > MessageHandleList;
00151 
00152 } //namespace IDEA
00153 
00154 #endif //HEADER_MESSAGE_HANDLE_HEADER

Contact information
© IDEA
Generated on Fri Feb 3 17:09:40 2006 for IDEA.