![]() |
MAK RTIspy API Documentation for HLA 1.3
|
00001 /********************************************************************* 00002 ** Copyright (c) 2004 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: saveStatusMsg.h,v $ $Revision: 1.6 $ $State: Exp $ 00007 *********************************************************************/ 00008 00011 00012 #ifndef DtSaveStatusMsg_H_ 00013 #define DtSaveStatusMsg_H_ 00014 00015 #include "rtiMsg.h" 00016 #include "netFederateStatusMsg.h" 00017 #include <vlutil/vlString.h> 00018 00019 enum DtSaveStatus 00020 { 00021 DtNoSaveInProgress, 00022 DtInstructedToSave, 00023 DtSaving, 00024 DtWaitingForFederationToSave 00025 }; 00026 00027 #ifdef DtIFSPEC1516 00028 00029 class DtConnectionMgr; 00030 class DtSaveStatusMsg; 00031 typedef void (*DtSaveStatusCb)(const DtSaveStatusMsg& inter, void* usr); 00032 00033 class DT_DLL_LRC DtSaveStatusMsg : public DtRtiMsg 00034 { 00035 public: 00036 00038 DtSaveStatusMsg(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00039 00041 DtSaveStatusMsg(DtFederateHandle federate, 00042 rti1516::FederateHandleSaveStatusPairVector const & saveStatusList, 00043 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00044 00046 DtSaveStatusMsg(const DtNetSaveStatusMsg* netRep, 00047 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00048 00050 virtual ~DtSaveStatusMsg(); 00051 00053 virtual DtRtiMsg* clone(bool copy = true) const; 00054 00056 virtual void set(DtFederateHandle federate, 00057 rti1516::FederateHandleSaveStatusPairVector const & saveStatusList); 00058 00060 virtual void setRequestingFederate(DtFederateHandle federate); 00061 virtual DtFederateHandle requestingFederate() const; 00062 00064 virtual void setSaveStatus( 00065 rti1516::FederateHandleSaveStatusPairVector const & saveStatusList, 00066 bool checkBufferSize=true); 00067 virtual rti1516::FederateHandleSaveStatusPairVector const & saveStatus() const; 00068 00070 virtual void printData(DtLogicalTimeFactory* logicalTimeFactory) const; 00071 00072 public: 00073 00075 static DtRtiMsg* create(const DtNetMsgHeader* initial, 00076 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00077 00078 static DtRtiMsg* create(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00079 00081 static void addCallback(DtConnectionMgr* conn, 00082 DtSaveStatusCb cb, void* usr, bool isMomCallback=false); 00083 static void removeCallback(DtConnectionMgr* conn, 00084 DtSaveStatusCb cb, void* usr, bool isMomCallback=false); 00085 00087 static const char* statusToString(DtSaveStatus status); 00088 00089 protected: 00090 00092 virtual DtNetSaveStatusMsg* netSaveStatusMsg(); 00093 virtual const DtNetSaveStatusMsg* netSaveStatusMsg() const; 00094 00096 virtual DtNetFederateStatus* netStatusList(); 00097 virtual const DtNetFederateStatus* netStatusList() const; 00098 00100 virtual void setNumberFederates(int count); 00101 virtual int numberFederates() const; 00102 00104 virtual DtRtiMsgKind internalDtRtiMsgKind(); 00105 00107 virtual int minSize( 00108 rti1516::FederateHandleSaveStatusPairVector const * saveStatusList=NULL) const; 00109 00111 virtual void setSizeOfStatus(unsigned long size); 00112 00114 virtual unsigned long sizeNeededForStatus( 00115 const rti1516::FederateHandleSaveStatusPairVector& status) const; 00116 00118 virtual DtSaveStatusMsg* self() const; 00119 00120 protected: 00121 00122 rti1516::FederateHandleSaveStatusPairVector* myFederateStatus; 00123 int myStatusFieldLength; 00124 }; 00125 00126 00127 inline DtSaveStatusMsg* DtSaveStatusMsg::self() const 00128 { 00129 return (DtSaveStatusMsg*) this; 00130 } 00131 00132 #elif defined(DtIFSPEC1516E) 00133 00134 class DtConnectionMgr; 00135 class DtSaveStatusMsg; 00136 typedef void (*DtSaveStatusCb)(const DtSaveStatusMsg& inter, void* usr); 00137 00138 class DT_DLL_LRC DtSaveStatusMsg : public DtRtiMsg 00139 { 00140 public: 00141 00143 DtSaveStatusMsg(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00144 00146 DtSaveStatusMsg(DtFederateHandle federate, 00147 rti1516e::FederateHandleSaveStatusPairVector const & saveStatusList, 00148 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00149 00151 DtSaveStatusMsg(const DtNetSaveStatusMsg* netRep, 00152 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00153 00155 virtual ~DtSaveStatusMsg(); 00156 00158 virtual DtRtiMsg* clone(bool copy = true) const; 00159 00161 virtual void set(DtFederateHandle federate, 00162 rti1516e::FederateHandleSaveStatusPairVector const & saveStatusList); 00163 00165 virtual void setRequestingFederate(DtFederateHandle federate); 00166 virtual DtFederateHandle requestingFederate() const; 00167 00169 virtual void setSaveStatus( 00170 rti1516e::FederateHandleSaveStatusPairVector const & saveStatusList, 00171 bool checkBufferSize=true); 00172 virtual rti1516e::FederateHandleSaveStatusPairVector const & saveStatus() const; 00173 00175 virtual void printData(DtLogicalTimeFactory* logicalTimeFactory) const; 00176 00177 public: 00178 00180 static DtRtiMsg* create(const DtNetMsgHeader* initial, 00181 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00182 00183 static DtRtiMsg* create(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00184 00186 static void addCallback(DtConnectionMgr* conn, 00187 DtSaveStatusCb cb, void* usr, bool isMomCallback=false); 00188 static void removeCallback(DtConnectionMgr* conn, 00189 DtSaveStatusCb cb, void* usr, bool isMomCallback=false); 00190 00192 static const char* statusToString(DtSaveStatus status); 00193 00194 protected: 00195 00197 virtual DtNetSaveStatusMsg* netSaveStatusMsg(); 00198 virtual const DtNetSaveStatusMsg* netSaveStatusMsg() const; 00199 00201 virtual DtNetFederateStatus* netStatusList(); 00202 virtual const DtNetFederateStatus* netStatusList() const; 00203 00205 virtual void setNumberFederates(int count); 00206 virtual int numberFederates() const; 00207 00209 virtual DtRtiMsgKind internalDtRtiMsgKind(); 00210 00212 virtual int minSize( 00213 rti1516e::FederateHandleSaveStatusPairVector const * saveStatusList=NULL) const; 00214 00216 virtual void setSizeOfStatus(unsigned long size); 00217 00219 virtual unsigned long sizeNeededForStatus( 00220 const rti1516e::FederateHandleSaveStatusPairVector& status) const; 00221 00223 virtual DtSaveStatusMsg* self() const; 00224 00225 protected: 00226 00227 rti1516e::FederateHandleSaveStatusPairVector* myFederateStatus; 00228 int myStatusFieldLength; 00229 }; 00230 00231 00232 inline DtSaveStatusMsg* DtSaveStatusMsg::self() const 00233 { 00234 return (DtSaveStatusMsg*) this; 00235 } 00236 00237 #endif //! DtIFSPEC1516 00238 #endif //! DtSaveStatusMsg_H_ 00239