![]() |
MAK RTIspy API Documentation for HLA 1516
|
00001 /********************************************************************* 00002 ** Copyright (c) 2006 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: fixedGridDdmMgr.h,v $ $Revision: 1.5 $ $State: Exp $ 00007 *********************************************************************/ 00008 #ifndef fixedGridDdmMgr_H_ 00009 #define fixedGridDdmMgr_H_ 00010 #ifdef DDM 00011 00014 00015 #include "rtiMsConfig.h" 00016 #include "ddmMgr.h" 00017 #include "internalTypes.h" 00018 #include "fixedGrid.h" 00019 00020 class DtRIDParameters; 00021 class DtConnectionMgr; 00022 class DtObjectMgr; 00023 class DtInteractionMgr; 00024 class DtFomClassMgr; 00025 class DtFixedGridRegion; 00026 00031 class DT_DLL_LRC DtFixedGridDataDistMgr : public DtDataDistMgr 00032 { 00033 protected: 00034 00036 DtFixedGridDataDistMgr(DtFederateMgr* fedMgrPtr); 00037 00038 public: 00039 00041 virtual ~DtFixedGridDataDistMgr(); 00042 00043 private: 00044 00046 DtFixedGridDataDistMgr(DtFixedGridDataDistMgr const& ); 00047 00049 DtFixedGridDataDistMgr& operator= (DtFixedGridDataDistMgr const& ); 00050 00051 public: 00052 00054 virtual void clearRegions(); 00055 00058 virtual void getOverlapAddressSet(DtFixedGridRegion const& region, 00059 DtFixedGrid::DtNetworkAddressSet& addressSet); 00060 00062 virtual void subscribeObjectClass(DtObjectClassHandle handle, DtFixedGridRegion& region); 00063 00065 virtual void unsubscribeObjectClass(DtObjectClassHandle handle, DtFixedGridRegion& region); 00066 00068 virtual void subscribeInteractionClass(DtInteractionClassHandle handle, DtFixedGridRegion& region); 00069 00071 virtual void unsubscribeInteractionClass(DtInteractionClassHandle handle, DtFixedGridRegion& region); 00072 00074 virtual DtRegion* localRegion(DtRegionHandle regionHandle); 00075 00077 virtual DtFixedGridRegion* localFixedGridRegion(DtRegionHandle regionHandle); 00078 00079 #ifdef DtIFSPEC1516 00080 00081 virtual DtFixedGridRegion* localFixedGridRegion(rti1516::RegionHandle regionHandle); 00082 #elif defined(DtIFSPEC1516E) 00083 00084 virtual DtFixedGridRegion* localFixedGridRegion(rti1516e::RegionHandle regionHandle); 00085 #endif 00086 00088 virtual bool isMemberLocalRegions(DtRegionHandle regionHandle); 00089 00091 virtual DtRegion* remoteRegion(DtRegionHandle regionHandle); 00092 00094 virtual bool isMemberRemoteRegions(DtRegionHandle regionHandle); 00095 00096 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E) 00097 00098 virtual DtRegionHandle createRegion(DtDimensionHandleSet const & dimHandles); 00099 #else 00100 00101 virtual DtRegion* createRegion(DtSpaceHandle spaceHandleValue, 00102 unsigned long numberOfExtents); 00103 #endif 00104 00106 virtual void deleteRegion(DtRegion *regionPtr); 00107 virtual void deleteRegion(DtRegionHandle regionHandle); 00108 00110 virtual void notifyAboutRegionModification(DtRegion* theRegion); 00111 virtual void notifyAboutRegionModification(DtRegionHandle regionHandle); 00112 00114 virtual DtSpaceHandle getAttributeRoutingSpaceHandle( 00115 DtAttributeHandle theHandle, 00116 DtObjectClassHandle whichClass); 00117 00119 virtual DtSpaceHandle getInteractionRoutingSpaceHandle( 00120 DtInteractionClassHandle theHandle); 00121 00122 #ifdef DtIFSPEC1516 00123 00124 virtual void setRangeBounds(DtRegionHandle regionHandle, 00125 DtExtentIndex extentIndex, DtDimensionHandle dimHandle, 00126 unsigned long lower, unsigned long upper); 00127 00129 virtual void setRangeBounds(DtRegionHandle regionHandle, 00130 DtExtentIndex extentIndex, DtDimBounds const & dimBounds); 00131 00133 virtual DtDimBounds getRangeBounds(DtRegionHandle regionHandle, 00134 DtExtentIndex extentIndex, DtDimensionHandle dimHandle); 00135 00137 virtual unsigned long maxUpperBound(DtSpaceHandle spaceHandle, 00138 DtDimensionHandle dimHandle) const; 00139 00142 virtual bool getDimensionHandleSet( 00143 DtRegionHandle theRegionHandle, 00144 rti1516::DimensionHandleSet& dimSet) const; 00145 00146 #elif defined(DtIFSPEC1516E) 00147 00148 virtual void setRangeBounds(DtRegionHandle regionHandle, 00149 DtExtentIndex extentIndex, DtDimensionHandle dimHandle, 00150 unsigned long lower, unsigned long upper); 00151 00153 virtual void setRangeBounds(DtRegionHandle regionHandle, 00154 DtExtentIndex extentIndex, DtDimBounds const & dimBounds); 00155 00157 virtual DtDimBounds getRangeBounds(DtRegionHandle regionHandle, 00158 DtExtentIndex extentIndex, DtDimensionHandle dimHandle); 00159 00161 virtual unsigned long maxUpperBound(DtSpaceHandle spaceHandle, 00162 DtDimensionHandle dimHandle) const; 00163 00166 virtual bool getDimensionHandleSet( 00167 DtRegionHandle theRegionHandle, 00168 rti1516e::DimensionHandleSet& dimSet) const; 00169 00170 #endif 00171 00173 virtual void postTick(); 00174 00175 public: 00176 00180 static DtDataDistMgr* create(DtFederateMgr* fedMgrPtr); 00181 00182 protected: 00183 00185 virtual DtRegionHandle uniqueRegionHandle(); 00186 00188 virtual void addLocalRegion(DtFixedGridRegion* region); 00189 00191 virtual void removeLocalRegion(DtRegionHandle regionHandle); 00192 00193 protected: 00194 00196 typedef std::set<DtFixedGridRegion*> DtFixedGridRegionSet; 00197 00199 typedef std::map<MAKRti::DtInetAddr, DtFixedGridRegionSet> DtFixedGridAddressRegionMap; 00200 00202 typedef std::map<DtRegionHandle, DtFixedGridRegion*> DtRegionMap; 00203 00204 protected: 00205 00207 DtRegionMap myLocalRegions; 00208 00210 DtRegionHandle myNextRegionHandle; 00211 00214 DtFixedGrid myFixedGrid; 00215 00217 DtFixedGridAddressRegionMap myObjectClassRegionOverlap; 00218 00220 DtFixedGridAddressRegionMap myInteractionClassRegionOverlap; 00221 }; 00222 00223 #endif //! DDM 00224 #endif //! fixedGridDdmMgr_H_ 00225 00226