VR-Forces 4.0.4 Class Documentation
include/vrfVrlSharedSource/DtVrlinkEnvironmentSimDataProcessor.h
Go to the documentation of this file.
00001 /******************************************************************************
00002 ** Copyright (c) 2009 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 ******************************************************************************/
00005 /******************************************************************************
00006 ** $RCSfile: DtVrlinkEnvironmentSimDataProcessor.h,v $ $Revision: 1.2 $ $State: Exp $
00007 ******************************************************************************/
00008 
00012 
00013 #pragma once
00014 
00015 #include <vrfVrlSharedSource/vrfProtocol.h>
00016 #include <vrfGuiCore/DtEnvironmentState.h>
00017 
00018 #include <vrvCore/DtSimEntryUpdater.h>
00019 #include <vrvCore/DtSimDataProcessorInterface.h>
00020 
00021 #include <vrvUtil/DtBalancedUpdater.h>
00022 #include <vrvUtil/DtSignalConnectionManager.h>
00023 
00024 namespace makVrv
00025 {
00026    class DtSimEntryObjectAgent;
00027 
00028    namespace DT_PROTOCOL_NAMESPACE
00029    {
00030       class DtVrlinkConnection;
00031       class DtVrlinkEnvironmentalStateListenerInterface;
00032       class DtEnvironmentalExistenceListener;
00033    }
00034 }
00035 
00036 namespace makVrf
00037 {
00038    class DtEnvironmentStateObjectAgent;
00039    
00040    namespace VRF_PROTOCOL_NAMESPACE
00041    {
00043       class VRF_PROTOCOL_EXPORT DtEnvironmentSimDataProcessor : public makVrv::DtSimDataProcessorInterface
00044       {
00045       public:
00046 
00048          DtEnvironmentSimDataProcessor(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkConnection& sim);
00049 
00051          virtual ~DtEnvironmentSimDataProcessor();
00052          
00054          void postDrainInput();
00055 
00057          void setObjectUpdateRate(makVrv::DtUniqueID uniqueId, makVrv::DtSimEntryUpdater::UpdateRate rate);
00058 
00060          void forceObjectUpdate(makVrv::DtUniqueID uniqueId);
00061 
00063          void environmentDiscovered(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkEnvironmentalStateListenerInterface& listener);
00064 
00066          void environmentToBeDeleted(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkEnvironmentalStateListenerInterface& listener);
00067 
00069          virtual void createAndSendState(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkEnvironmentalStateListenerInterface& listener,
00070             DtEnvironmentStateObjectAgent& objectDriver);
00071          virtual void setState(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkEnvironmentalStateListenerInterface& listener,
00072             DtVrlinkSimulatedEnvironmentProcess& state);
00073          virtual void setupPoints(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkEnvironmentalStateListenerInterface& listener,
00074             DtVrlinkSimulatedEnvironmentProcess& state);
00075 
00076       protected:
00077 
00078          static void postDrainInput(void* usr);
00079 
00080          virtual void slot_postUpdateCallback(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkEnvironmentalStateListenerInterface& listener);
00081 
00082       protected:
00083          
00084          //A Listener and a driver which will be updated with it.
00085          class EnvironmentStateUpdater
00086          {
00087          public:
00088 
00089             EnvironmentStateUpdater(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkEnvironmentalStateListenerInterface& listener,
00090                DtEnvironmentStateObjectAgent& driver, DtEnvironmentSimDataProcessor& processor);
00091 
00092             EnvironmentStateUpdater(const EnvironmentStateUpdater& orig);
00093 
00094             EnvironmentStateUpdater& operator=(const EnvironmentStateUpdater& orig);
00095 
00096             //Are the updaters equal
00097             bool operator==(const EnvironmentStateUpdater& orig) const;
00098 
00100             void update(double timeT);
00101 
00102          protected:
00103 
00104             makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkEnvironmentalStateListenerInterface* myListener;
00105             DtEnvironmentStateObjectAgent* myObjectAgent;
00106             DtEnvironmentSimDataProcessor* myProcessor;
00107          };
00108     
00109          typedef std::vector<makVrv::DtUniqueID> EnvironmentIdList;
00110 
00111          struct EnvironmentSimDataInstance
00112          {
00113             makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkEnvironmentalStateListenerInterface* myListener;
00114             DtEnvironmentStateObjectAgent* myAgent;
00115             makVrv::DtSimEntryUpdater::UpdateRate myRate;
00116          };
00117 
00118          typedef std::map<makVrv::DtUniqueID,EnvironmentSimDataInstance > EnvironmentAgentMap;
00119 
00120          typedef makVrv::DtBalancedUpdater<EnvironmentStateUpdater> EnvironmentUpdaterGroup;
00121          typedef std::map<makVrv::DtSimEntryUpdater::UpdateRate,EnvironmentUpdaterGroup>
00122             EnvironmentUpdateGroupMap;                  
00123 
00124       protected:
00125 
00126          makVrv::DtSignalConnectionManager myConnections;
00127 
00128          makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkConnection& mySimulation;
00129          makVrv::DT_PROTOCOL_NAMESPACE::DtEnvironmentalExistenceListener& myListener;
00130          DtTimedSection myTimer;
00131          makVrv::DtSimEntryObjectAgent* mySimEntryAgent;
00132 
00133          EnvironmentAgentMap myEnvironmentAgents;
00134          EnvironmentUpdateGroupMap myRefreshRateGroups;
00135          EnvironmentIdList myForceUpdateList;
00136          
00137          typedef boost::unordered_map<makVrv::DtUniqueID, DtVrlinkSimulatedEnvironmentProcess> StateMap;
00138          StateMap myStateMap;
00139       };
00140    }
00141 }

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)