![]() |
MAK RTIspy API Documentation for HLA Evolved
|
00001 /********************************************************************* 00002 ** Copyright (c) 1998 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: reqObjMsg.h,v $ $Revision: 1.18 $ $State: Exp $ 00007 *********************************************************************/ 00008 00011 00012 #ifndef DtRequestMsg_H_ 00013 #define DtRequestMsg_H_ 00014 00015 #include "rtiMsg.h" 00016 #include "netReqMsg.h" 00017 00018 class DtConnectionMgr; 00019 class DtRequestMsg; 00020 class DtAttributeHandleSet; 00021 00022 typedef void (*DtRequestCb)(const DtRequestMsg& inter, void* usr); 00023 00024 enum DtRequestType 00025 { 00026 DtRequestById, 00027 DtRequestByClass, 00028 DtAutoRequestById 00029 }; 00030 00031 class DT_DLL_LRC DtRequestMsg : public DtRtiMsg 00032 { 00033 public: 00034 00036 DtRequestMsg(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00037 00038 DtRequestMsg( 00039 DtRequestType type, 00040 DtHandle idOrClass, 00041 const DtAttributeHandleSet& theSet, 00042 #ifdef DtIFSPEC1516 00043 rti1516::VariableLengthData const & tag, 00044 #elif defined(DtIFSPEC1516E) 00045 rti1516e::VariableLengthData const & tag, 00046 #else 00047 char const * tag, 00048 #endif 00049 DtHandle regionSetHandle = theDefaultRegionSetHandle, 00050 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00051 00053 DtRequestMsg(const DtNetRequestMsg* netRepMsg, 00054 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00055 00057 virtual ~DtRequestMsg(); 00058 00060 virtual DtRtiMsg* clone(bool copy = true) const; 00061 00063 virtual void set( 00064 DtRequestType type, 00065 DtHandle idOrClass, 00066 const DtAttributeHandleSet& theSet, 00067 #ifdef DtIFSPEC1516 00068 rti1516::VariableLengthData const & tag, 00069 #elif defined(DtIFSPEC1516E) 00070 rti1516e::VariableLengthData const & tag, 00071 #else 00072 char const * tag, 00073 #endif 00074 DtHandle regionSetHandle = theDefaultRegionSetHandle); 00075 00077 virtual DtRequestType requestType() const; 00078 virtual void setRequestType(DtRequestType type); 00079 00081 00083 virtual void setObjectClassHandle(DtObjectClassHandle hand); 00084 00086 virtual DtObjectClassHandle objectClassHandle() const; 00087 00089 00091 virtual void setId(DtObjectInstanceHandle id); 00092 00094 virtual DtObjectInstanceHandle id() const; 00095 00097 virtual void setRegionSet(DtHandle handleValue); 00098 virtual DtHandle regionSet() const; 00099 00101 virtual void setAttrHandles(const DtAttributeHandleSet& attrs); 00102 virtual const DtAttributeHandleSet& attrHandles() const; 00103 00105 #ifdef DtIFSPEC1516 00106 virtual void setTag(rti1516::VariableLengthData const& tag); 00107 virtual rti1516::VariableLengthData const& tag() const; 00108 #elif defined(DtIFSPEC1516E) 00109 virtual void setTag(rti1516e::VariableLengthData const& tag); 00110 virtual rti1516e::VariableLengthData const& tag() const; 00111 #else 00112 virtual void setTag(char const * tag); 00113 virtual char const * tag() const; 00114 #endif 00115 00117 virtual void printData(DtLogicalTimeFactory* logicalTimeFactory) const; 00118 00119 public: 00120 00122 static DtRtiMsg* create(const DtNetMsgHeader* initial, 00123 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00124 00126 static DtRtiMsg* create(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00127 00129 static void addCallback(DtConnectionMgr *conn, 00130 DtRequestCb cb, void *usr, bool isMomCallback=false); 00131 static void removeCallback(DtConnectionMgr *conn, 00132 DtRequestCb cb, void *usr, bool isMomCallback=false); 00133 00134 protected: 00135 00137 virtual DtNetRequestMsg* netRequestMsg(); 00138 virtual const DtNetRequestMsg* netRequestMsg() const; 00139 00141 virtual DtRtiMsgKind internalDtRtiMsgKind(); 00142 00144 #ifdef DtIFSPEC1516 00145 virtual int minSize(rti1516::VariableLengthData const * tag=NULL) const; 00146 #elif defined(DtIFSPEC1516E) 00147 virtual int minSize(rti1516e::VariableLengthData const * tag=NULL) const; 00148 #else 00149 virtual int minSize(char const * tag=NULL) const; 00150 #endif 00151 00153 virtual void setTagSize(int size); 00154 virtual int tagSize() const; 00155 00157 virtual int tagFieldSize() const; 00158 00160 virtual char* tagPtr() const; 00161 00163 virtual DtRequestMsg* self() const; 00164 00165 protected: 00166 00167 int myDirty; 00168 DtAttributeHandleSet* myAttrs; 00169 #ifdef DtIFSPEC1516 00170 rti1516::VariableLengthData* myTag; 00171 #elif defined(DtIFSPEC1516E) 00172 rti1516e::VariableLengthData* myTag; 00173 #else 00174 char* myTag; 00175 #endif 00176 }; 00177 00178 00179 inline DtRequestMsg* DtRequestMsg::self() const 00180 { 00181 return const_cast<DtRequestMsg*>( this ); 00182 } 00183 00184 #endif 00185