![]() |
MAK RTIspy API Documentation for HLA Evolved
|
00001 /********************************************************************* 00002 ** Copyright (c) 1998 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: resignMsg.h,v $ $Revision: 1.20 $ $State: Exp $ 00007 *********************************************************************/ 00008 00011 00012 #ifndef DtResignMsg_H_ 00013 #define DtResignMsg_H_ 00014 00015 #include "rtiMsg.h" 00016 #include "netResignMsg.h" 00017 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E) 00018 #include "RTI/Enums.h" 00019 #endif 00020 #include <vlutil/vlFedTarget.h> 00021 00022 class DtConnectionMgr; 00023 class DtResignMsg; 00024 typedef void (*DtResignCb)(const DtResignMsg& inter, void* usr); 00025 00026 enum DtResignReason 00027 { 00028 DtNormalResign, // Through API call 00029 DtNotHeartbeatedResign, // Heartbeat msg not received in time 00030 DtLostConnectionResign, // Lost reliable connection 00031 DtForwarderQueueFullResign,// Forwarder queue for federate filled 00032 DtUserForcedResign // Forced through GUI or command line 00033 }; 00034 00035 class DT_DLL_LRC DtResignMsg : public DtRtiMsg 00036 { 00037 public: 00038 00040 DtResignMsg(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00041 00042 DtResignMsg(const char* fedExName, 00043 DtFederateHandle fedHandle, 00044 DtResignAction action, 00045 DtResignReason reason, 00046 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00047 00049 DtResignMsg(const DtNetResignMsg* netRepMsg, 00050 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00051 00053 virtual ~DtResignMsg(); 00054 00056 virtual DtRtiMsg* clone(bool copy = true) const; 00057 00059 virtual void set(const char* fedExName, 00060 DtFederateHandle fedHandle, 00061 DtResignAction action, 00062 DtResignReason reason); 00063 00065 virtual void setResignAction(DtResignAction action); 00066 virtual DtResignAction resignAction() const; 00067 00069 virtual void setResignReason(DtResignReason reason); 00070 virtual DtResignReason resignReason() const; 00071 00073 #ifdef DtIFSPEC1516 00074 virtual void setTimeStamp(rti1516::LogicalTime const & time); 00075 virtual rti1516::LogicalTime const * timeStamp( 00076 DtLogicalTimeFactory* logicalTimeFactory) const; 00077 #elif defined(DtIFSPEC1516E) 00078 virtual void setTimeStamp(rti1516e::LogicalTime const & time); 00079 virtual rti1516e::LogicalTime const * timeStamp( 00080 DtLogicalTimeFactory* logicalTimeFactory) const; 00081 #else 00082 virtual void setTimeStamp(RTI::FedTime const & time); 00083 virtual RTI::FedTime const * timeStamp( 00084 DtLogicalTimeFactory* logicalTimeFactory) const; 00085 #endif 00086 00088 virtual void setTimeStampSize(int size); 00089 virtual int timeStampSize() const; 00090 00092 virtual void printData(DtLogicalTimeFactory* logicalTimeFactory) const; 00093 00094 public: 00095 00097 static DtRtiMsg* create(const DtNetMsgHeader* initial, 00098 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00099 00101 static DtRtiMsg* create(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00102 00104 static void addCallback(DtConnectionMgr* conn, 00105 DtResignCb cb, void* usr, bool isMomCallback=false); 00106 static void removeCallback(DtConnectionMgr* conn, 00107 DtResignCb cb, void* usr, bool isMomCallback=false); 00108 00109 protected: 00110 00112 virtual DtNetResignMsg* netResignMsg(); 00113 virtual const DtNetResignMsg* netResignMsg() const; 00114 00116 virtual DtRtiMsgKind internalDtRtiMsgKind(); 00117 00119 virtual int minSize() const; 00120 00122 virtual int timeStampFieldSize() const; 00123 00125 virtual char* timeStampPtr(); 00126 00128 virtual DtResignMsg* self() const; 00129 00130 protected: 00132 #ifdef DtIFSPEC1516 00133 rti1516::LogicalTime* myTimeStamp; 00134 #elif defined(DtIFSPEC1516E) 00135 rti1516e::LogicalTime* myTimeStamp; 00136 #else 00137 RTI::FedTime* myTimeStamp; 00138 #endif 00139 }; 00140 00141 00142 inline DtResignMsg* DtResignMsg::self() const 00143 { 00144 return const_cast<DtResignMsg*>( this ); 00145 } 00146 00147 00148 #endif 00149