MAK RTIspy API Documentation for HLA 1.3
distributedDdmMgr.h
Go to the documentation of this file.
00001 /*********************************************************************
00002 ** Copyright (c) 2006 MaK Technologies, Inc.
00003 ** All rights reserved.
00004 *********************************************************************/
00005 /*********************************************************************
00006 ** $RCSfile: distributedDdmMgr.h,v $ $Revision: 1.9 $ $State: Exp $
00007 *********************************************************************/
00008 #ifndef distributedDdmMgr_H_
00009 #define distributedDdmMgr_H_
00010 #ifdef DDM
00011 
00014 
00015 #include "rtiMsConfig.h"
00016 #include <assert.h>
00017 #include "ddmMgr.h"
00018 
00019 class DtObjectDataDistMgr;
00020 class DtInterDataDistMgr;
00021 class DtDistributedRegion;
00022 class DtRegionSet;
00023 class DtNotifyRegMsg;
00024 class DtDeleteRegMsg;
00025 class DtRegionRealizationMsg;
00026 class DtResignMsg;
00027 
00033 class DT_DLL_LRC DtDistributedDataDistMgr : public DtDataDistMgr
00034 {
00035 
00036 public:
00038    typedef std::map<DtRegionHandle, DtRegionRealization*> DtRegionRealizationMap;
00039 
00040 protected:
00041 
00043    DtDistributedDataDistMgr(DtFederateMgr* fedMgrPtr);
00044 
00045 public:
00046 
00048    virtual ~DtDistributedDataDistMgr();
00049 
00050 private:
00051    
00053    DtDistributedDataDistMgr(DtDistributedDataDistMgr const& );
00054 
00056    DtDistributedDataDistMgr& operator= (DtDistributedDataDistMgr const& );
00057 
00058 public:
00059 
00061    virtual DtDistributedRegion& defaultRegion();
00062 
00064    virtual DtRegionRealization& defaultRegionRealization();
00065 
00067    virtual DtRegionEntryList const& defaultRegionList() const;
00068 
00070    virtual DtObjectDataDistMgr* objDdmMgr();
00071 
00073    virtual DtInterDataDistMgr* interDdmMgr();
00074 
00076    virtual bool active();
00077 
00079    virtual MAKRti::DtInetAddr freeChannel();
00080 
00082    virtual void processNotifyRegion(const DtNotifyRegMsg& msg);
00083 
00085    virtual void processDeleteRegion(const DtDeleteRegMsg& msg);
00086 
00088    virtual void processRegionRealization(const DtRegionRealizationMsg& msg);
00089 
00091    virtual void processResign(const DtResignMsg& msg);
00092 
00094    virtual void joinObjectRegionSet(const MAKRti::DtInetAddr& address,
00095       DtRegionHandle regionSetHandle);
00096 
00098    virtual void dropObjectRegionSet(const MAKRti::DtInetAddr& address,
00099       DtRegionHandle regionSetHandle);
00100 
00102    virtual void joinInteractionRegionSet(const MAKRti::DtInetAddr& address,
00103       DtInteractionClassHandle classHandle, DtRegionHandle regionSetHandle);
00104 
00106    virtual void dropInteractionRegionSet(const MAKRti::DtInetAddr& address,
00107       DtInteractionClassHandle classHandle, DtRegionHandle regionSetHandle);
00108 
00110    virtual DtRegion* localRegion(DtRegionHandle regionHandle);
00111 
00113    virtual DtDistributedRegion* localDistributedRegion(DtRegionHandle regionHandle);
00114 
00116    virtual bool isMemberLocalRegions(DtRegionHandle regionHandle);
00117 
00119    virtual DtRegion* remoteRegion(DtRegionHandle regionHandle);
00120 
00122    virtual DtDistributedRegion* remoteDistributedRegion(DtRegionHandle regionHandle);
00123 
00125    virtual DtRegionRealization* localRegionRealization(
00126       DtRegionHandle realizationHandle);
00127 
00129    virtual DtRegionRealization* remoteRegionRealization(
00130       DtRegionHandle realizationHandle);
00131 
00133    virtual bool isMemberRemoteRegions(DtRegionHandle regionHandle);
00134 
00135 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
00136 
00137 
00138 
00139 
00140 
00141 
00142    virtual DtRegionHandle constructConveyedRegion(DtRegionRealization const& region,
00143       DtDimensionHandleSet const& availDim);
00144 
00147    virtual void destructConveyedRegions();
00148 
00151    virtual DtRegionRealization const* conveyedRegion(
00152       DtRegionHandle realizationHandle);
00153 #endif
00154 
00156    virtual void addPendingNotifyRegion(DtRegionSet& regionSet);
00157 
00159    virtual void addPendingNotifyRegion(const DtRegionEntryList& regionList);
00160 
00163    virtual void sendPendingNotifyRegion(bool forceDualTransmit=false);
00164 
00167    virtual void sendNotifyRegionMsg(const DtDistributedRegion &region,
00168       bool forceDualTransmit=false);
00169 
00171    virtual void sendDeleteRegionMsg(DtRegionHandle handleValue);
00172 
00175    virtual void sendRegionRealizationMsg(
00176       DtRegionRealization const& regionRealization, bool forceDualTransmit=false);
00177 
00179 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
00180    virtual DtRegionHandle createRegion(DtDimensionHandleSet const & dimHandles);
00181 #else
00182    virtual DtRegion* createRegion(DtSpaceHandle spaceHandleValue,
00183                                   unsigned long numberOfExtents);
00184    virtual DtDistributedRegion* createDistributedRegion(DtSpaceHandle spaceHandleValue,
00185                                   unsigned long numberOfExtents);
00186 #endif
00187 
00189    virtual void deleteRegion(DtRegion *regionPtr);
00190 
00192    virtual void deleteDistributedRegion(DtDistributedRegion *regionPtr);
00193 
00195    virtual void deleteRegion(DtRegionHandle regionHandle);
00196 
00198    virtual void notifyAboutRegionModification(DtRegion* theRegion);
00199 
00201    virtual void notifyAboutDistributedRegionModification(DtDistributedRegion* theRegion);
00202 
00204    virtual void notifyAboutRegionModification(DtRegionHandle regionHandle);
00205 
00210    virtual DtRegionRealization* getRegionRealization(DtDistributedRegion* region,
00211       DtDimensionHandleSet* defaultDimensions=NULL);
00212 
00214    virtual DtSpaceHandle getAttributeRoutingSpaceHandle(
00215      DtAttributeHandle   theHandle,
00216      DtObjectClassHandle whichClass);
00217 
00219    virtual DtSpaceHandle getInteractionRoutingSpaceHandle(
00220       DtInteractionClassHandle   theHandle);
00221 
00222 #ifdef DtIFSPEC1516
00223 
00224    virtual void setRangeBounds(DtRegionHandle regionHandle,
00225       DtExtentIndex extentIndex, DtDimensionHandle dimHandle,
00226       unsigned long lower, unsigned long upper);
00227    virtual void setRangeBounds(DtRegionHandle regionHandle,
00228       DtExtentIndex extentIndex, DtDimBounds const & dimBounds);
00229    virtual DtDimBounds getRangeBounds(DtRegionHandle regionHandle,
00230       DtExtentIndex extentIndex, DtDimensionHandle dimHandle);
00231 
00234    virtual bool getDimensionHandleSet(
00235       DtRegionHandle theRegionHandle,
00236       rti1516::DimensionHandleSet& dimSet) const;
00237 #elif defined(DtIFSPEC1516E)
00238 
00239    virtual void setRangeBounds(DtRegionHandle regionHandle,
00240        DtExtentIndex extentIndex, DtDimensionHandle dimHandle,
00241        unsigned long lower, unsigned long upper);
00242    virtual void setRangeBounds(DtRegionHandle regionHandle,
00243        DtExtentIndex extentIndex, DtDimBounds const & dimBounds);
00244    virtual DtDimBounds getRangeBounds(DtRegionHandle regionHandle,
00245        DtExtentIndex extentIndex, DtDimensionHandle dimHandle);
00246 
00249    virtual bool getDimensionHandleSet(
00250        DtRegionHandle theRegionHandle,
00251        rti1516e::DimensionHandleSet& dimSet) const;
00252 #endif
00253 
00255    virtual void postTick();
00256 
00258    virtual bool save(DtRtiSaveFile& file);
00259 
00261    virtual void prepareToRestore();
00262 
00264    virtual bool restore( DtRtiSaveFile& file );
00265 
00266 public:
00267 
00269    static void processNotifyRegion(const DtNotifyRegMsg& msg, void* usr);
00270 
00272    static void processDeleteRegion(const DtDeleteRegMsg& msg, void* usr);
00273 
00275    static void processRegionRealization(const DtRegionRealizationMsg& msg,
00276       void* usr);
00277 
00279    static DtDataDistMgr* create(DtFederateMgr* fedMgrPtr);
00280 
00281 protected:
00282 
00284    virtual DtRegionHandle uniqueRegionHandle();
00285 
00287    virtual DtRegionHandle uniqueRegionRealizationHandle();
00288 
00290    virtual void addLocalRegion(DtDistributedRegion* region);
00291    virtual void removeLocalRegion(DtRegionHandle regionHandle);
00292    
00294    virtual void addRemoteRegion(DtDistributedRegion* region,
00295       DtFederateHandle fedHandle);
00296    virtual void removeRemoteRegion(DtRegionHandle regionHandle,
00297       DtFederateHandle fedHandle);
00298 
00300    virtual void addLocalRegionRealization(DtRegionRealization* realization);
00301    virtual void removeLocalRegionRealization(DtRegionHandle handle);
00302 
00304    virtual void addRemoteRegionRealization(DtRegionRealization* realization,
00305       DtFederateHandle fedHandle);
00306    virtual void removeRemoteRegionRealization(DtRegionHandle handle,
00307       DtFederateHandle fedHandle);
00308 
00310    virtual void destroyLists();
00311 
00312 protected:
00313    
00315    DtDistributedRegion* myDefaultRegion;
00316    DtRegionRealization* myDefaultRegionRealization;
00317    DtRegionEntryList myDefaultRegionList;
00318    
00320    MAKRti::DtInetAddr myFreeChannel;
00321 
00323    bool myFreeChannelInitialized;
00324 
00326    std::map<DtInetAddr, MAKRti::DtList*> myObjRegSetChannels;
00327    std::map<DtInetAddr, MAKRti::DtHashlist*> myInterRegSetChannels;
00328 
00330    MAKRti::DtHashlist myLocalRegions;
00331    MAKRti::DtHashlist myRemoteRegions;
00332    MAKRti::DtHashlist myRemoteRegionsByFederate;
00333    MAKRti::DtHashlist myLocalRegionRealizations;
00334    MAKRti::DtHashlist myLocalRegionRealizationsByRegion;
00335    std::map<DtRegionHandle, DtRegionRealization*> myRemoteRegionRealizations;
00336    MAKRti::DtHashlist myRemoteRegionRealizationsByRegion;
00337    MAKRti::DtHashlist myRemoteRegionRealizationsByFederate;
00338    DtRegionRealizationMap myConveyedRegions;
00339 
00341    DtRegionHandle myNextRegionHandle;
00342    DtRegionHandle myNextRegionRealizationHandle;
00343    DtRegionHandle myNextConveyedRegionHandle;
00344 
00346    std::set<DtRegionHandle> myPendingNotifyRegions;
00347 
00349    std::set<DtRegionHandle> myNotifyRegionsSentThisTick;
00350 
00351 };
00352 
00353 #endif
00354 #endif
00355 
00356 
00357 

Document ID: Generated on Thu Jun 14 14:15:04 EDT 2012 from SVN revision 116116
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)