![]() |
MAK RTIspy API Documentation for HLA 1.3
|
00001 /********************************************************************* 00002 ** Copyright (c) 1998 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: savRespMsg.h,v $ $Revision: 1.7 $ $State: Exp $ 00007 *********************************************************************/ 00008 00011 00012 #ifndef DtSaveResponseMsg_H_ 00013 #define DtSaveResponseMsg_H_ 00014 00015 #include "rtiMsg.h" 00016 #include "netSavRespMsg.h" 00017 00018 class DtConnectionMgr; 00019 class DtSaveResponseMsg; 00020 typedef void (*DtSaveResponseCb)(const DtSaveResponseMsg& inter, void* usr); 00021 00022 enum DtSaveResponseFlag 00023 { 00024 DtSRSaveInProgress, 00025 DtSRSaveAccepted, 00026 DtSRSaveWaiting 00027 }; 00028 00029 class DT_DLL_LRC DtSaveResponseMsg : public DtRtiMsg 00030 { 00031 public: 00032 00034 DtSaveResponseMsg(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00035 00036 DtSaveResponseMsg(DtFederateHandle requestingFederateVal, 00037 unsigned short requestIDValue, 00038 const char* labelVal, 00039 DtSaveResponseFlag flag, 00040 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00041 00043 DtSaveResponseMsg(const DtNetSaveResponseMsg* netRepMsg, 00044 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00045 00047 virtual ~DtSaveResponseMsg(); 00048 00050 virtual DtRtiMsg* clone(bool copy = true) const; 00051 00053 virtual void set(DtFederateHandle requestingFederateVal, 00054 unsigned short requestIDValue, const char* theLabel, 00055 DtSaveResponseFlag flag); 00056 00058 void setRequestingFederate(DtFederateHandle requestingFederateVal); 00059 DtFederateHandle requestingFederate() const; 00060 00062 virtual void setRequestID(unsigned short requestIDValue); 00063 virtual unsigned short requestID() const; 00064 00066 virtual void setLabel(const char* label); 00067 virtual const char* label() const; 00068 00070 void setResponseFlag(DtSaveResponseFlag flag); 00071 DtSaveResponseFlag responseFlag() const; 00072 00074 virtual void printData(DtLogicalTimeFactory* logicalTimeFactory) const; 00075 00076 public: 00077 00079 static DtRtiMsg* create(const DtNetMsgHeader* initial, 00080 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00081 00083 static DtRtiMsg* create(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00084 00086 static void addCallback(DtConnectionMgr* conn, 00087 DtSaveResponseCb cb, void* usr); 00088 static void removeCallback(DtConnectionMgr* conn, 00089 DtSaveResponseCb cb, void* usr); 00090 00091 protected: 00092 00094 virtual DtNetSaveResponseMsg* netSaveResponseMsg(); 00095 virtual const DtNetSaveResponseMsg* netSaveResponseMsg() const; 00096 00098 virtual DtRtiMsgKind internalDtRtiMsgKind(); 00099 00101 virtual char* labelPtr(); 00102 00104 virtual int labelFieldSize() const; 00105 00107 virtual void setLabelSize(int size); 00108 virtual int labelSize() const; 00109 00111 virtual int minSize(const char* theLabel=NULL) const; 00112 00114 virtual DtSaveResponseMsg* self() const; 00115 00116 protected: 00117 00118 char* myLabel; 00119 }; 00120 00121 00122 inline DtSaveResponseMsg* DtSaveResponseMsg::self() const 00123 { 00124 return const_cast<DtSaveResponseMsg*>( this ); 00125 } 00126 00127 #endif 00128