![]() |
VR-Forces 4.0.4 Class Documentation
|
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