![]() |
MAK RTIspy API Documentation for HLA 1.3
|
00001 /********************************************************************* 00002 ** Copyright (c) 2004 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: restoreStatusMsg.h,v $ $Revision: 1.6 $ $State: Exp $ 00007 *********************************************************************/ 00008 00011 00012 #ifndef DtRestoreStatusMsg_H_ 00013 #define DtRestoreStatusMsg_H_ 00014 00015 #include "rtiMsg.h" 00016 #include "netFederateStatusMsg.h" 00017 #include <vlutil/vlString.h> 00018 00019 enum DtRestoreStatus 00020 { 00021 DtNoRestoreInProgress, 00022 DtFederateRestoreRequestPending, 00023 DtWaitingForRestoreToBegin, 00024 DtPreparedToRestore, 00025 DtRestoring, 00026 DtWaitingForFederationToRestore 00027 }; 00028 00029 #ifdef DtIFSPEC1516 00030 00031 class DtConnectionMgr; 00032 class DtRestoreStatusMsg; 00033 typedef void (*DtRestoreStatusCb)(const DtRestoreStatusMsg& inter, void* usr); 00034 00035 class DT_DLL_LRC DtRestoreStatusMsg : public DtRtiMsg 00036 { 00037 public: 00038 00040 DtRestoreStatusMsg(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00041 00043 DtRestoreStatusMsg(DtFederateHandle federate, 00044 rti1516::FederateHandleRestoreStatusPairVector const & restoreStatusList, 00045 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00046 00048 DtRestoreStatusMsg(const DtNetRestoreStatusMsg* netRep, 00049 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00050 00052 virtual ~DtRestoreStatusMsg(); 00053 00055 virtual DtRtiMsg* clone(bool copy = true) const; 00056 00058 virtual void set(DtFederateHandle federate, 00059 rti1516::FederateHandleRestoreStatusPairVector const & restoreStatusList); 00060 00062 virtual void setRequestingFederate(DtFederateHandle federate); 00063 virtual DtFederateHandle requestingFederate() const; 00064 00066 virtual void setRestoreStatus( 00067 rti1516::FederateHandleRestoreStatusPairVector const & restoreStatusList, 00068 bool checkBufferSize=true); 00069 virtual rti1516::FederateHandleRestoreStatusPairVector const & restoreStatus() const; 00070 00072 virtual void printData(DtLogicalTimeFactory* logicalTimeFactory) const; 00073 00074 public: 00075 00077 static DtRtiMsg* create(const DtNetMsgHeader* initial, 00078 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00079 00080 static DtRtiMsg* create(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00081 00083 static void addCallback(DtConnectionMgr* conn, 00084 DtRestoreStatusCb cb, void* usr, bool isMomCallback=false); 00085 static void removeCallback(DtConnectionMgr* conn, 00086 DtRestoreStatusCb cb, void* usr, bool isMomCallback=false); 00087 00089 static const char* statusToString(DtRestoreStatus status); 00090 00091 protected: 00092 00094 virtual DtNetRestoreStatusMsg* netRestoreStatusMsg(); 00095 virtual const DtNetRestoreStatusMsg* netRestoreStatusMsg() const; 00096 00098 virtual DtNetFederateStatus* netStatusList(); 00099 virtual const DtNetFederateStatus* netStatusList() const; 00100 00102 virtual void setNumberFederates(int count); 00103 virtual int numberFederates() const; 00104 00106 virtual DtRtiMsgKind internalDtRtiMsgKind(); 00107 00109 virtual int minSize( 00110 rti1516::FederateHandleRestoreStatusPairVector const * restoreStatusList=NULL) const; 00111 00113 virtual void setSizeOfStatus(unsigned long size); 00114 00116 virtual unsigned long sizeNeededForStatus( 00117 const rti1516::FederateHandleRestoreStatusPairVector& status) const; 00118 00120 virtual DtRestoreStatusMsg* self() const; 00121 00122 protected: 00123 00124 rti1516::FederateHandleRestoreStatusPairVector* myFederateStatus; 00125 int myStatusFieldLength; 00126 }; 00127 00128 00129 inline DtRestoreStatusMsg* DtRestoreStatusMsg::self() const 00130 { 00131 return (DtRestoreStatusMsg*) this; 00132 } 00133 00134 #elif defined(DtIFSPEC1516E) 00135 00136 class DtConnectionMgr; 00137 class DtRestoreStatusMsg; 00138 typedef void (*DtRestoreStatusCb)(const DtRestoreStatusMsg& inter, void* usr); 00139 00140 class DT_DLL_LRC DtRestoreStatusMsg : public DtRtiMsg 00141 { 00142 public: 00143 00145 DtRestoreStatusMsg(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00146 00148 DtRestoreStatusMsg(DtFederateHandle federate, 00149 rti1516e::FederateRestoreStatusVector const & restoreStatusList, 00150 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00151 00153 DtRestoreStatusMsg(const DtNetRestoreStatusMsg* netRep, 00154 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00155 00157 virtual ~DtRestoreStatusMsg(); 00158 00160 virtual DtRtiMsg* clone(bool copy = true) const; 00161 00163 virtual void set(DtFederateHandle federate, 00164 rti1516e::FederateRestoreStatusVector const & restoreStatusList); 00165 00167 virtual void setRequestingFederate(DtFederateHandle federate); 00168 virtual DtFederateHandle requestingFederate() const; 00169 00171 virtual void setRestoreStatus( 00172 rti1516e::FederateRestoreStatusVector const & restoreStatusList, 00173 bool checkBufferSize=true); 00174 virtual rti1516e::FederateRestoreStatusVector const & restoreStatus() const; 00175 00177 virtual void printData(DtLogicalTimeFactory* logicalTimeFactory) const; 00178 00179 public: 00180 00182 static DtRtiMsg* create(const DtNetMsgHeader* initial, 00183 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00184 00185 static DtRtiMsg* create(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00186 00188 static void addCallback(DtConnectionMgr* conn, 00189 DtRestoreStatusCb cb, void* usr, bool isMomCallback=false); 00190 static void removeCallback(DtConnectionMgr* conn, 00191 DtRestoreStatusCb cb, void* usr, bool isMomCallback=false); 00192 00194 static const char* statusToString(DtRestoreStatus status); 00195 00196 protected: 00197 00199 virtual DtNetRestoreStatusMsg* netRestoreStatusMsg(); 00200 virtual const DtNetRestoreStatusMsg* netRestoreStatusMsg() const; 00201 00203 virtual DtNetFederateStatus* netStatusList(); 00204 virtual const DtNetFederateStatus* netStatusList() const; 00205 00207 virtual void setNumberFederates(int count); 00208 virtual int numberFederates() const; 00209 00211 virtual DtRtiMsgKind internalDtRtiMsgKind(); 00212 00214 virtual int minSize( 00215 rti1516e::FederateRestoreStatusVector const * restoreStatusList=NULL) const; 00216 00218 virtual void setSizeOfStatus(unsigned long size); 00219 00221 virtual unsigned long sizeNeededForStatus( 00222 const rti1516e::FederateRestoreStatusVector& status) const; 00223 00225 virtual DtRestoreStatusMsg* self() const; 00226 00227 protected: 00228 00229 rti1516e::FederateRestoreStatusVector* myFederateStatus; 00230 int myStatusFieldLength; 00231 }; 00232 00233 00234 inline DtRestoreStatusMsg* DtRestoreStatusMsg::self() const 00235 { 00236 return (DtRestoreStatusMsg*) this; 00237 } 00238 00239 #endif //! DtIFSPEC1516 00240 #endif //! DtRestoreStatusMsg_H_ 00241