MAK RTIspy API Documentation for HLA 1516
forwarderNodeInfoMsg.h
Go to the documentation of this file.
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

Document ID: Generated on Thu Jun 14 14:15:04 EDT 2012 from SVN revision 116116
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)