VR-Forces 4.0.4 Class Documentation
include/vrfobjcore/remoteComponentAttachmentManager.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2003 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /*******************************************************************************
00006 ** $RCSfile: remoteComponentAttachmentManager.h,v $ $Revision: 1.2 $ $State: Exp $
00007 *******************************************************************************/
00008 #ifndef DTREMOTECOMPONENTATTACHMENTMANAGER_H_
00009 #define DTREMOTECOMPONENTATTACHMENTMANAGER_H_
00010 
00013 
00015 #include <vl/globalObjDes.h>
00016 
00018 #include <vrfutil/globalObjectDesignatorKey.h>
00019 
00021 #include <map>
00022 
00024 #include "vrfobjcore/vrfobjcoreDefines.h"
00025 #include "vrfobjcore/remoteComponentConfigurationBuilder.h"
00026 
00027 class DtVrfObjectManager;
00028 class DtFilename;
00029 class DtVrfObject;
00030 class DtRemoteConfigurationMapEntry;
00031 class DtRemoteConfigurationMapper;
00032 
00035 class DT_DLL_vrfobjcore DtRemoteComponentAttachmentManager
00036 {
00037 protected:
00039    DtRemoteComponentAttachmentManager();
00040 
00041 public:
00042 
00043    typedef std::map<DtGlobalObjectDesignatorKey,DtGlobalObjectDesignator> RecentArrivalsMap;
00044    typedef RecentArrivalsMap::iterator ArrivalIterator;
00045    typedef RecentArrivalsMap::const_iterator const_ArrivalIterator;
00046 
00047    enum EvaluationReadinessState
00048    {
00049       Remove = -1,
00050       NotReady = 0,
00051       Ready
00052    };
00053 
00054 public:
00055 
00057    DtRemoteComponentAttachmentManager(DtVrfObjectManager *pObjMgr);
00058 
00060    virtual ~DtRemoteComponentAttachmentManager();
00061 
00062 public:
00063 
00065    virtual void addRecentArrival(DtVrfObject *pVrfObj);
00066 
00068    virtual void attach(const DtRemoteConfigurationMapEntry& entry,
00069       DtVrfObject& obj);
00070 
00073    virtual DtRemoteConfigurationMapper* attachmentRules();
00074    virtual const DtRemoteConfigurationMapper* attachmentRules() const;
00076 
00079    DtRemoteComponentConfigurationBuilder::CreatorFcn builderCreatorFcn();
00080    void setBuilderCreatorFcn(DtRemoteComponentConfigurationBuilder::CreatorFcn fcn);
00082 
00085    virtual void clear();
00086 
00092    virtual DtRemoteConfigurationMapper* createAttachmentRules(const char* pReaderWriterName);
00093 
00095    virtual void clearRecentArrivals();
00096 
00102    virtual EvaluationReadinessState checkReadinessCriteria(DtVrfObject& obj);
00103 
00109    virtual bool checkRejectionCriteria(DtVrfObject& obj);
00110 
00112    virtual void destroyAttachmentRules();
00113 
00116    virtual void evaluateAndAttach(DtVrfObject& obj);
00117 
00119    virtual bool initialize(const DtFilename& fromFile);
00120 
00123    virtual void processRemoveFromArrivals(DtVrfObject* pVrfObj);
00124    virtual void processRemoveFromArrivals(const DtGlobalObjectDesignator& globalId);
00126 
00128    virtual void resetAllReflectedObjectsToNonVrfSimulated();
00129 
00131    virtual void resetReflectedObjectToNonVrfSimulated(DtVrfObject *pVrfObj);
00132 
00134    virtual void tick();
00135 
00138    DtTime tickRate() const;
00139    void setTickRate(DtTime interval);
00141 
00143    DtVrfObjectManager* vrfObjectManager();
00144    const DtVrfObjectManager* vrfObjectManager() const;
00145 
00146 public:
00147 
00149    virtual void processVrfObjectToBeRemoved(DtVrfObject* pVrfObject);
00150 
00153    static void vrfObjectToBeRemovedCallback(DtVrfObject* pVrfObject, void* pUsr);
00154 
00155 protected:
00156 
00160    virtual void doWork();
00161 
00162 protected:
00163 
00165    RecentArrivalsMap myConfirmedAttachments;
00166 
00168    DtTime   myNextTick;
00169 
00171    RecentArrivalsMap myRecentArrivals;
00172 
00179    DtRemoteComponentConfigurationBuilder *pMyRemoteConfigBuilder;
00180 
00183    DtRemoteComponentConfigurationBuilder::CreatorFcn myRemoteConfigBuilderCreatorFcn;
00184 
00186    DtGlobalObjectDesignatorKey myWorkerKey;
00187 
00189    DtTime   myTickRate;
00190 
00192    DtVrfObjectManager   *pMyObjMgr;
00193 
00195    DtRemoteConfigurationMapper *pMyAttachmentRules;
00196 
00197 
00198 private:
00200    DtRemoteComponentAttachmentManager(DtRemoteComponentAttachmentManager&);
00201    const DtRemoteComponentAttachmentManager& operator=(const DtRemoteComponentAttachmentManager&);
00202 };
00203 
00204 inline DtRemoteComponentConfigurationBuilder::CreatorFcn DtRemoteComponentAttachmentManager::builderCreatorFcn()
00205 {
00206    return (myRemoteConfigBuilderCreatorFcn);
00207 }
00208 
00209 inline void DtRemoteComponentAttachmentManager::setBuilderCreatorFcn(DtRemoteComponentConfigurationBuilder::CreatorFcn fcn)
00210 {
00211    myRemoteConfigBuilderCreatorFcn = fcn;
00212 }
00213 
00214 inline DtTime DtRemoteComponentAttachmentManager::tickRate() const {return (myTickRate);}
00215 inline void DtRemoteComponentAttachmentManager::setTickRate(DtTime interval) {myTickRate = interval;}
00216 
00217 inline DtVrfObjectManager* DtRemoteComponentAttachmentManager::vrfObjectManager() {return (pMyObjMgr);}
00218 inline const DtVrfObjectManager* DtRemoteComponentAttachmentManager::vrfObjectManager() const {return (pMyObjMgr);}
00219 
00220 #endif

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)