![]() |
MAK RTIspy API Documentation for HLA Evolved
|
00001 /********************************************************************* 00002 ** Copyright (c) 2010 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: joinMsg.h,v $ $Revision: 1.37 $ $State: Exp $ 00007 *********************************************************************/ 00008 00011 00012 #ifndef DtReportFederationsMsg_H_ 00013 #define DtReportFederationsMsg_H_ 00014 00015 #include "rtiMsg.h" 00016 #include "netRtiMsgHdr.h" 00017 #include "netReportFederationsMsg.h" 00018 #include <vlutil/vlString.h> 00019 #include <vlutil/vlUtil.h> 00020 #include <vlutil/vlInetAddr.h> 00021 00022 class DtConnectionMgr; 00023 class DtReportFederationsMsg; 00024 typedef void (*DtReportFederationsCb)(const DtReportFederationsMsg& inter, void* usr); 00025 00026 class DT_DLL_LRC DtReportFederationsMsg : public DtRtiMsg 00027 { 00028 public: 00029 00031 DtReportFederationsMsg(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00032 00033 DtReportFederationsMsg(unsigned long ID, 00034 const std::vector<MAKRti::DtString>& federationNames, 00035 const std::vector<MAKRti::DtString>& timeImplNames, 00036 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00037 00039 DtReportFederationsMsg(const DtNetReportFederationsMsg* netRepMsg, 00040 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00041 00043 virtual ~DtReportFederationsMsg(); 00044 00046 virtual DtRtiMsg* clone(bool copy = true) const; 00047 00049 virtual void set(unsigned long ID, 00050 const std::vector<MAKRti::DtString>& federationNames, 00051 const std::vector<MAKRti::DtString>& timeImplNames); 00052 00054 void setDestinationID( unsigned long ID ); 00055 const unsigned long destinationID() const; 00056 00058 virtual void setFederationNames( const std::vector<MAKRti::DtString> & names); 00059 virtual void getFederationNames(std::vector<MAKRti::DtString>& names) const; 00060 00062 virtual void setTimeImplementationNames( const std::vector<MAKRti::DtString> & names); 00063 virtual void getTimeImplementationNames(std::vector<MAKRti::DtString>& names) const; 00064 00066 virtual void printData(DtLogicalTimeFactory* logicalTimeFactory) const; 00067 00068 public: 00069 00071 static DtRtiMsg* create(const DtNetMsgHeader* initial, 00072 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00073 00075 static DtRtiMsg* create(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00076 00078 static void addCallback(DtConnectionMgr* conn, 00079 DtReportFederationsCb cb, void* usr); 00080 static void removeCallback(DtConnectionMgr* conn, 00081 DtReportFederationsCb cb, void* usr); 00082 00083 protected: 00084 00086 virtual DtNetReportFederationsMsg* netReportFederationsMsg(); 00087 virtual const DtNetReportFederationsMsg* netReportFederationsMsg() const; 00088 00090 virtual DtRtiMsgKind internalDtRtiMsgKind(); 00091 00093 virtual int minSize() const; 00094 00098 virtual int setMinSizes( 00099 const std::vector<MAKRti::DtString>& federationNames, 00100 const std::vector<MAKRti::DtString>& timeImplNames); 00101 00103 virtual void setFederationNamesSize( unsigned long size ); 00104 virtual unsigned long federationNamesSize() const; 00105 00107 virtual void setTimeImplementationNamesSize( unsigned long size ); 00108 virtual unsigned long timeImplementationNamesSize() const; 00109 00111 virtual const char* federationNamesPtr() const; 00112 virtual const char* timeImplementationNamesPtr() const; 00113 00114 //non-const versions 00115 virtual char* federationNamesPtr(); 00116 virtual char* timeImplementationNamesPtr(); 00117 00119 virtual DtReportFederationsMsg* self() const; 00120 00121 }; 00122 00123 00124 inline DtReportFederationsMsg* DtReportFederationsMsg::self() const 00125 { 00126 return const_cast<DtReportFederationsMsg*>( this ); 00127 } 00128 00129 #endif 00130