![]() |
MAK RTIspy API Documentation for HLA Evolved
|
00001 /********************************************************************* 00002 ** Copyright (c) 1998 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: joinMsg.h,v $ $Revision: 1.37 $ $State: Exp $ 00007 *********************************************************************/ 00008 00011 00012 #ifndef DtJoinMsg_H_ 00013 #define DtJoinMsg_H_ 00014 00015 #include "rtiMsg.h" 00016 #include "netRtiMsgHdr.h" 00017 #include "netJoinMsg.h" 00018 #include "rtiVersion.h" 00019 #include <vlutil/vlString.h> 00020 #include <vlutil/vlUtil.h> 00021 #include <vlutil/vlInetAddr.h> 00022 00023 class DtConnectionMgr; 00024 class DtJoinMsg; 00025 typedef void (*DtJoinCb)(const DtJoinMsg& inter, void* usr); 00026 00027 class DT_DLL_LRC DtJoinMsg : public DtRtiMsg 00028 { 00029 public: 00030 00032 DtJoinMsg(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00033 00034 DtJoinMsg( 00035 unsigned long sourceIDValue, 00036 unsigned short requestIDValue, 00037 MAKRti::DtString const & fedTypeValue, 00038 MAKRti::DtString const & fedExNameValue, 00039 MAKRti::DtString const & fedNameValue, 00040 MAKRti::DtString const& federateHostNameValue, 00041 const std::vector<MAKRti::DtString>& moduleNames, 00042 DtHlaVersionId hlaVersion, 00043 unsigned long flagsValue, 00044 unsigned int needPartnerValue, 00045 const std::vector<unsigned int>& joinModulesCrcs, 00046 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00047 00049 DtJoinMsg(const DtNetJoinMsg* netRepMsg, 00050 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00051 00053 virtual ~DtJoinMsg(); 00054 00056 virtual DtRtiMsg* clone(bool copy = true) const; 00057 00059 virtual void set( 00060 unsigned long sourceIDValue, 00061 unsigned short requestIDValue, 00062 MAKRti::DtString const & fedTypeValue, 00063 MAKRti::DtString const & fedExNameValue, 00064 MAKRti::DtString const & fedNameValue, 00065 MAKRti::DtString const& federateHostNameValue, 00066 const std::vector<MAKRti::DtString>& moduleNames, 00067 DtHlaVersionId hlaVersion, 00068 unsigned long flagsValue, 00069 unsigned int needPartnerValue, 00070 const std::vector<unsigned int>& joinModulesCrcs); 00071 00076 virtual unsigned long sourceID() const; 00077 virtual void setSourceID(unsigned long sourceIDValue); 00078 00080 virtual unsigned short requestID() const; 00081 virtual void setRequestID(unsigned short requestIDValue); 00082 00084 virtual void setFederateType(MAKRti::DtString const & type); 00085 virtual MAKRti::DtString federateType() const; 00086 00088 virtual void setFullFedExName(MAKRti::DtString const & name); 00089 virtual MAKRti::DtString fullFedExName() const; 00090 00092 virtual void setFederateName(MAKRti::DtString const & name); 00093 virtual MAKRti::DtString federateName() const; 00094 00096 virtual void setFederateHostName(MAKRti::DtString const& name); 00097 virtual MAKRti::DtString federateHostName() const; 00098 00100 virtual void setFomModuleNames( const std::vector<MAKRti::DtString> & moduleNames); 00101 virtual void getFomModuleNames(std::vector<MAKRti::DtString>& modules) const; 00102 00105 virtual void setIpAddress( const MAKRti::DtInetAddr& ip ); 00106 virtual MAKRti::DtInetAddr ipAddress() const; 00107 00109 virtual MAKRti::DtInetAddr webServerAddress() const; 00110 virtual void setWebServerAddress(const MAKRti::DtInetAddr& ip); 00111 00113 virtual int webServerPort() const; 00114 virtual void setWebServerPort(int port); 00115 00117 virtual void setHlaVersion(DtHlaVersionId version); 00118 virtual DtHlaVersionId hlaVersion() const; 00119 00121 virtual void setFlags( unsigned long value ); 00122 virtual unsigned long flags() const; 00123 00125 virtual void setNeedPartner( unsigned int value ); 00126 virtual unsigned int needPartner() const; 00127 00129 unsigned int numOfCrcs() const; 00130 void setNumOfCrcs(unsigned int value); 00131 00133 virtual void setCrcsOfFedFiles(const std::vector<unsigned int> & moduleCrcs ); 00134 virtual void getCRCsOfFedFiles(std::vector<unsigned int>& crcOfFedFiles) const; 00135 00137 virtual void printData(DtLogicalTimeFactory* logicalTimeFactory) const; 00138 00139 public: 00140 00142 static DtRtiMsg* create(const DtNetMsgHeader* initial, 00143 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00144 00146 static DtRtiMsg* create(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00147 00149 static void addCallback(DtConnectionMgr* conn, 00150 DtJoinCb cb, void* usr); 00151 static void removeCallback(DtConnectionMgr* conn, 00152 DtJoinCb cb, void* usr); 00153 00154 protected: 00155 00157 virtual DtNetJoinMsg* netJoinMsg(); 00158 virtual const DtNetJoinMsg* netJoinMsg() const; 00159 00161 virtual DtRtiMsgKind internalDtRtiMsgKind(); 00162 00164 virtual int minSize() const; 00165 00169 virtual int setMinSizes( MAKRti::DtString const & federateType, 00170 MAKRti::DtString const & fedExName, 00171 MAKRti::DtString const & federateName, 00172 MAKRti::DtString const& federateHostName, 00173 const std::vector<MAKRti::DtString>& fomModuleNamesVal, 00174 const std::vector<unsigned int>& joinModulesCrcs); 00175 00177 virtual void setFederateTypeSize( unsigned long size ); 00178 virtual unsigned long federateTypeSize() const; 00179 00181 virtual void setFedExNameSize( unsigned long size ); 00182 virtual unsigned long fedExNameSize() const; 00183 00185 virtual void setFederateNameSize( unsigned long size ); 00186 virtual unsigned long federateNameSize() const; 00187 00189 virtual void setFederateHostNameSize( unsigned long size ); 00190 virtual unsigned long federateHostNameSize() const; 00191 00193 virtual void setfomModuleNameSize( unsigned long size ); 00194 virtual unsigned long fomModuleNameSize() const; 00195 00197 virtual const char* federateNamePtr() const; 00198 virtual const char* fedExNamePtr() const; 00199 virtual const char* federateTypePtr() const; 00200 virtual const char* fomModuleNamesPtr() const; 00201 virtual const char* federateHostNamePtr() const; 00202 virtual const DtNetU32* crcsOfFomModulesPtr() const; 00203 00204 //non-const versions 00205 virtual char* federateNamePtr(); 00206 virtual char* fedExNamePtr(); 00207 virtual char* federateTypePtr(); 00208 virtual char* fomModuleNamesPtr(); 00209 virtual char* federateHostNamePtr(); 00210 virtual DtNetU32* crcsOfFomModulesPtr(); 00211 00213 virtual DtJoinMsg* self() const; 00214 }; 00215 00216 00217 inline DtJoinMsg* DtJoinMsg::self() const 00218 { 00219 return const_cast<DtJoinMsg*>( this ); 00220 } 00221 00222 #endif 00223