00001 00002 00003 00004 00005 #ifndef _NETWORKMESSAGE_H 00006 #define _NETWORKMESSAGE_H 00007 00008 #include "Types.h" 00009 00010 00011 namespace YansCoreNS 00012 { 00015 class NetworkMessageData 00016 { 00017 public: 00020 explicit NetworkMessageData (void); 00021 00028 NetworkMessageData (NetworkMessageData const & other); 00029 00032 virtual ~NetworkMessageData (void); 00033 00038 boost::shared_ptr<NetworkMessageData> Clone (void) const; 00039 }; 00040 00043 class NetworkMessage 00044 { 00045 public: 00048 explicit NetworkMessage (NodeNS::IPAddress senderIPAddress, 00049 NodeNS::Port senderPort, 00050 NodeNS::IPAddress nextHopIPAddress, 00051 NodeNS::IPAddress destinationIPAddress, 00052 NodeNS::Port destinationPort, 00053 TopologyNS::HopCount hopCount); 00054 00058 NetworkMessage (NetworkMessage const & other); 00059 00062 ~NetworkMessage (void); 00063 00069 NodeNS::IPAddress GetSenderIPAddress (void) const; 00070 00076 NodeNS::Port GetSenderPort (void) const; 00077 00081 NodeNS::IPAddress GetNextHopIPAddress (void) const; 00082 00086 NodeNS::IPAddress GetDestinationIPAddress (void) const; 00087 00091 NodeNS::Port GetDestinationPort (void) const; 00092 00098 TopologyNS::HopCount GetTTLHopCount (void) const; 00099 00103 void SetData (boost::shared_ptr<NetworkMessageData> data); 00104 00112 boost::shared_ptr<NetworkMessageData> GetData (void) const; 00113 00114 private: 00115 NodeNS::IPAddress senderIPAddress; 00116 NodeNS::Port senderPort; 00117 NodeNS::IPAddress nextHopIPAddress; 00118 NodeNS::IPAddress destinationIPAddress; 00119 NodeNS::Port destinationPort; 00120 TopologyNS::HopCount hopCount; 00121 boost::shared_ptr<NetworkMessageData> data; 00122 }; 00123 } 00124 00125 #endif /* _NETWORKMESSAGE_H */ 00126