![]() |
MAK RTIspy API Documentation for HLA 1.3
|
00001 /********************************************************************* 00002 ** Copyright (c) 2001 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: objRegSetMsg.h,v $ $Revision: 1.15 $ $State: Exp $ 00007 *********************************************************************/ 00008 00011 00012 #ifndef DtObjRegSetMsg_H_ 00013 #define DtObjRegSetMsg_H_ 00014 #ifdef DDM 00015 00016 #include "rtiMsg.h" 00017 #include "netObjRegMsg.h" 00018 #include <vlutil/vlInetAddr.h> 00019 00020 00021 class DtRegionSet; 00022 class DtConnectionMgr; 00023 class DtObjRegSetMsg; 00024 00025 enum DtObjRegSetType 00026 { 00027 DtObjPubRegSet, 00028 DtObjSubRegSet 00029 }; 00030 00031 typedef void (*DtObjRegSetCb)(const DtObjRegSetMsg& msg, void* usr); 00032 00033 class DT_DLL_LRC DtObjRegSetMsg : public DtRtiMsg 00034 { 00035 public: 00036 00038 DtObjRegSetMsg(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00039 00041 DtObjRegSetMsg(DtObjRegSetType type, 00042 const DtRegionSet ®ionSet, 00043 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00044 00046 DtObjRegSetMsg(const DtNetObjRegSetMsg* netRepMsg, 00047 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00048 00050 virtual ~DtObjRegSetMsg(); 00051 00053 virtual DtRtiMsg* clone(bool copy = true) const; 00054 00056 virtual void set(DtObjRegSetType type, 00057 const DtRegionSet ®ionSet); 00058 00060 virtual void setRegionSetType(DtObjRegSetType type); 00061 virtual DtObjRegSetType regionSetType() const; 00062 00064 virtual void setRegionSetHandle(DtRegionHandle handleValue); 00065 virtual DtRegionHandle regionSetHandle() const; 00066 00068 virtual void setAddress(const MAKRti::DtInetAddr& addressValue); 00069 virtual MAKRti::DtInetAddr address() const; 00070 00072 virtual unsigned long numberRegions() const; 00073 00075 virtual const DtRegionHandle* regions() const; 00076 00078 virtual void reserveRegionSlots(unsigned long numberRegions); 00079 00081 virtual void addRegion(DtRegionHandle handleValue); 00082 00084 virtual void printData(DtLogicalTimeFactory* logicalTimeFactory) const; 00085 00086 public: 00087 00088 static DtRtiMsg* create(const DtNetMsgHeader* initial, 00089 DtBufferPtr buffer); 00090 00092 static DtRtiMsg* create(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00093 00094 static void addCallback(DtConnectionMgr *conn, 00095 DtObjRegSetCb cb, void *usr); 00096 00097 static void removeCallback(DtConnectionMgr *conn, 00098 DtObjRegSetCb cb, void *usr); 00099 00100 protected: 00101 00103 virtual DtNetU32* netRegions(); 00104 00106 virtual DtNetObjRegSetMsg* netObjRegSetMsg(); 00107 virtual const DtNetObjRegSetMsg* netObjRegSetMsg() const; 00108 00110 virtual DtRtiMsgKind internalDtRtiMsgKind(); 00111 00113 virtual int minSize() const; 00114 00116 virtual DtObjRegSetMsg* self() const; 00117 00118 protected: 00119 unsigned long myRegionCount; 00120 unsigned long myReservedSlotCount; 00121 DtRegionHandle* myRegions; 00122 bool myDirty; 00123 }; 00124 00125 00126 inline DtObjRegSetMsg* DtObjRegSetMsg::self() const 00127 { 00128 return const_cast<DtObjRegSetMsg*>( this ); 00129 } 00130 00131 #endif 00132 #endif 00133