![]() |
MAK RTIspy API Documentation for HLA 1516
|
00001 /********************************************************************* 00002 ** Copyright (c) 2008 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: forwarderNodeInfoMsg.h,v $ $Revision: 1.5 $ $State: Exp $ 00007 *********************************************************************/ 00008 00009 #ifndef DtForwarderNodeInfoMsg_H_ 00010 #define DtForwarderNodeInfoMsg_H_ 00011 00016 00017 #include <vlutil/vlString.h> 00018 #include <vlutil/vlUtil.h> 00019 00020 #include "rtiMsg.h" 00021 #include "netForwarderNodeInfoMsg.h" 00022 #include <averagedLatencyTestReport.h> 00023 #include <map> 00024 00025 class DtForwarderNodeInfoMsg; 00026 class DtConnectionMgr; 00027 00028 struct DT_DLL_LRC DtForwarderNodeInfo 00029 { 00030 DtForwarderNodeInfo(); 00031 DtForwarderNodeInfo(const DtForwarderNodeInfo& orig) 00032 { 00033 myForwarderName = orig.myForwarderName; 00034 myHostName = orig.myHostName; 00035 myIpAddr = orig.myIpAddr; 00036 00037 std::set<MAKRti::DtInetAddr>::const_iterator iter = orig.myExternalIPAddrs.begin(); 00038 std::set<MAKRti::DtInetAddr>::const_iterator theEnd = orig.myExternalIPAddrs.end(); 00039 for ( ; iter != theEnd; ++iter ) 00040 { 00041 myExternalIPAddrs.insert(*iter); 00042 } 00043 myNodeId = orig.myNodeId; 00044 } 00045 00046 MAKRti::DtString myForwarderName; 00047 MAKRti::DtString myHostName; 00048 MAKRti::DtInetAddr myIpAddr; 00049 std::set<MAKRti::DtInetAddr> myExternalIPAddrs; 00050 unsigned long myNodeId; 00051 00052 bool operator<(const DtForwarderNodeInfo& other) const 00053 { 00054 return myIpAddr < other.myIpAddr; 00055 } 00056 bool operator==(const DtForwarderNodeInfo& other) const 00057 { 00058 bool retVal = true; 00059 00060 retVal &= myNodeId == other.myNodeId; 00061 retVal &= myIpAddr == other.myIpAddr; 00062 retVal &= myForwarderName == other.myForwarderName; 00063 retVal &= myHostName == other.myHostName; 00064 retVal &= myExternalIPAddrs.size() == other.myExternalIPAddrs.size(); 00065 std::set<MAKRti::DtInetAddr>::const_iterator iter = other.myExternalIPAddrs.begin(); 00066 std::set<MAKRti::DtInetAddr>::const_iterator myIter = myExternalIPAddrs.begin(); 00067 std::set<MAKRti::DtInetAddr>::const_iterator theEnd = other.myExternalIPAddrs.end(); 00068 for ( ; retVal && iter != theEnd; ++iter, ++myIter ) 00069 { 00070 retVal &= (myIter == iter ); 00071 } 00072 return retVal; 00073 } 00074 00075 }; 00076 00077 00078 typedef void (*DtForwarderNodeInfoCb)(const DtForwarderNodeInfoMsg& report, void* usr); 00079 00080 00084 class DT_DLL_LRC DtForwarderNodeInfoMsg : public DtRtiMsg 00085 { 00086 public: 00087 00088 00090 DtForwarderNodeInfoMsg(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00091 00092 DtForwarderNodeInfoMsg(const DtNetForwarderNodeInfoMsg* netRepMsg, 00093 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00094 00096 virtual ~DtForwarderNodeInfoMsg(); 00097 00099 virtual DtRtiMsg* clone(bool copy = true) const; 00100 00102 virtual void printData() const; 00103 00104 00105 virtual void setInetAddr(const MAKRti::DtInetAddr& addr); 00106 virtual MAKRti::DtInetAddr getInetAddr() const; 00107 00108 virtual void setNodeId( unsigned long nodeId); 00109 virtual unsigned long getNodeId() const; 00110 00111 virtual void setPort( int nodeId); 00112 virtual int getPort() const; 00113 00114 virtual void setForwarderName( const MAKRti::DtString& name); 00115 virtual MAKRti::DtString forwarderName() const; 00116 00117 virtual void setForwarderHostName( const MAKRti::DtString& name ); 00118 virtual MAKRti::DtString forwarderHostName() const; 00119 00120 virtual void setKnownForwarderNodes(const std::set<DtForwarderNodeInfo>& nodes); 00121 virtual void knownForwarderNodes(std::set<DtForwarderNodeInfo>& nodesToPopulate) const; 00122 00123 virtual void setNodeIdForRecipientToUse( unsigned long nodeId ); 00124 virtual unsigned long nodeIdForRecipientToUse() const; 00125 00126 public: 00127 00129 static DtRtiMsg* create(const DtNetMsgHeader* initial, 00130 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00131 00132 static DtRtiMsg* create(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00133 00136 static void addCallback(DtConnectionMgr* conn, 00137 DtForwarderNodeInfoCb cb, void* usr); 00138 static void removeCallback(DtConnectionMgr* conn, 00139 DtForwarderNodeInfoCb cb, void* usr); 00140 00141 00142 protected: 00143 00145 virtual DtNetForwarderNodeInfoMsg* netForwarderNodeInfoMsg(); 00146 virtual const DtNetForwarderNodeInfoMsg* netForwarderNodeInfoMsg() const; 00147 00149 virtual DtRtiMsgKind internalDtRtiMsgKind(); 00150 00152 virtual int minSize() const; 00153 00155 virtual const char* forwarderNamePtr() const; 00156 virtual char* forwarderNamePtr(); 00157 virtual void setForwarderNameSize( unsigned int size ); 00158 virtual unsigned int forwarderNameSize() const; 00159 00161 virtual const char* forwarderHostNamePtr() const; 00162 virtual char* forwarderHostNamePtr(); 00163 virtual void setForwarderHostNameSize( unsigned int size ); 00164 virtual unsigned int forwarderHostNameSize() const; 00165 00168 virtual void setAddressFamily(MAKRti::DtInetUtils::DtInetAddrFamily num ); 00169 virtual MAKRti::DtInetUtils::DtInetAddrFamily addressFamily() const; 00170 00172 virtual void setNumKnownForwarder(unsigned long num); 00173 virtual unsigned long numKnownForwarders() const; 00174 00176 virtual const DtNetU128* knownFwAddrsPtr() const; 00177 virtual DtNetU128* knownFwAddrsPtr(); 00178 00180 virtual const DtNetU32* knownFwNodeIdsPtr() const; 00181 virtual DtNetU32* knownFwNodeIdsPtr(); 00182 00184 virtual const char* knownFwNamesPtr() const; 00185 virtual char* knownFwNamesPtr(); 00186 virtual void setKnownFwNamesSize(unsigned long size); 00187 virtual unsigned long knownFwNamesSize() const; 00188 00190 virtual const char* knownFwHostNamesPtr() const; 00191 virtual char* knownFwHostNamesPtr(); 00192 virtual void setKnownFwHostNamesSize(unsigned long size); 00193 virtual unsigned long knownFwHostNamesSize() const; 00194 00195 00196 }; 00197 00198 #endif