VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vrfComponentProcessorInterface.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
6 #pragma once
7 
9 #include <tbb/spin_rw_mutex.h>
10 
11 namespace makVrv
12 {
13  class DtSimEntryObjectAgent;
14  class DtSimStateObjectAgent;
15  class DtBaseConnection;
16 }
17 
18 namespace makVrf
19 {
20  class DtSimDataProcessorManager;
21  class DtStateComponent;
22 
24  {
25  public:
26  virtual void createAndSendState(const std::set<const DtFrameStateInterface*>&, makVrv::DtSimStateObjectAgent&,
27  bool force = false) = 0;
28  };
29 
30  template <typename T_Agent, typename T_Component>
32  {
33  public:
34 
37 
39  virtual ~DtVrfComponentProcessor();
40 
41 
45 
48  virtual void queueStateComponentRemoved(const DtStateComponent*);
49 
51  virtual void queueFunction(const boost::function<void ()>& function);
52 
54  virtual bool componentDiscovered(const DtFrameStateInterface*);
56 
58  virtual void stateComponentDiscovered(const DtStateComponent*, UInt64);
59 
60  protected:
61  void setupComponentData();
62 
63  virtual void slot_frameAdvanced();
64  virtual bool shouldForceObjectUpdate(const DtFrameStateInterface*) const;
65  virtual void componentUpdated(const DtFrameStateInterface*);
66 
69  virtual Legion::UInt64 legionIdFromVantageId(makVrv::DtUniqueID lid) const override;
70  virtual T_Agent* createAgent(const DtFrameStateInterface* sc);
71  virtual void destroyAgent(makVrv::DtSimStateObjectAgent* agent, const DtFrameStateInterface* sc);
72 
74 
76 
77  //A Listener and a driver which will be updated with it.
79  {
80  public:
81 
82  ComponentUpdater(const std::set<const DtFrameStateInterface*>& listener,
83  makVrv::DtSimStateObjectAgent& driver,
85  : myFrameStateInterfaces(listener)
86  , myObjectAgent(&driver)
87  , myDataProcessorInterface(&iface)
88  {
89  }
90 
95  {
96  }
97 
99  {
103 
104  return *this;
105  }
106 
107  //Are the updaters equal
108  bool operator==(const ComponentUpdater& orig) const
109  {
110  return (myObjectAgent == orig.myObjectAgent);
111  }
112 
113  void update(double)
114  {
115  if (myFrameStateInterfaces.size() &&
116  (myDataProcessorInterface->vantageIdFromLegionId((*myFrameStateInterfaces.begin())->legionGlobalId()) != 0))
117  {
119  }
120  }
121 
122  protected:
123  std::set<const DtFrameStateInterface*> myFrameStateInterfaces;
124  makVrv::DtSimStateObjectAgent* myObjectAgent;
126  };
127 
128  virtual void dataDiscoveredByLegionId(Legion::UInt64 lid);
129 
130  protected:
134 
136  makVrv::DtSimEntryObjectAgent* mySimEntryAgent;
137 
139  typedef std::map<makVrv::DtSimEntryUpdater::UpdateRate, UpdaterGroup> UpdateGroupMap;
140 
142 
143  typedef std::set<makVrv::DtUniqueID> EntityIdList;
145 
150  {
151  std::set<const DtFrameStateInterface*> myFrameStateInterfaces;
152  makVrv::DtSimStateObjectAgent* myAgent;
154  };
155 
156  typedef std::map<makVrv::DtUniqueID, ComponentInstance> AgentMap;
158 
159  boost::signals2::connection myVantageToLegionIdMapperConnection;
160 
161  std::set<makVrv::DtUniqueID> myAwaitingValidId;
163  tbb::spin_rw_mutex myMutex;
164  };
165 }
makVrv::DtBalancedUpdater< ComponentUpdater > UpdaterGroup
Definition: vrfComponentProcessorInterface.h:138
DtSimDataProcessorManager * mySimDataProcessorManager
Definition: vrfComponentProcessorInterface.h:162
makVrv::DtSimStateObjectAgent * myObjectAgent
Definition: vrfComponentProcessorInterface.h:124
DtSimDataProcessorManager * simDataProcessorManager()
In theory, the state data should have a big blob of data for all components – the state data entries ...
Definition: vrfComponentProcessorInterface.h:149
UpdateRate
Definition: DtSimEntryUpdater.h:31
makVrv::DtBaseConnection & mySimulation
Definition: vrfComponentProcessorInterface.h:133
virtual void queueStateComponentRemoved(const DtStateComponent *)
virtual T_Agent * createAgent(const DtFrameStateInterface *sc)
This class will manage the data processors. It will be the spot that the data processors can post mes...
Definition: simDataProcessorManager.h:25
DtStateDataManager * myStateDataManager
Definition: vrfComponentProcessorInterface.h:131
std::set< const DtFrameStateInterface * > myFrameStateInterfaces
Definition: vrfComponentProcessorInterface.h:151
std::set< makVrv::DtUniqueID > myAwaitingValidId
Definition: vrfComponentProcessorInterface.h:161
makVrv::DtSimEntryObjectAgent * mySimEntryAgent
Definition: vrfComponentProcessorInterface.h:136
makVrv::DtSignalConnectionManager myConnectionManager
Definition: vrfComponentProcessorInterface.h:132
Definition: vrfDataProcessorInterface.h:35
virtual void forceObjectUpdate(makVrv::DtUniqueID)
virtual makVrv::DtUniqueID idForStateComponent(const DtFrameStateInterface *) const
The DtBaseConnection is an abstract class.
Definition: DtBaseConnection.h:35
bool operator==(const ComponentUpdater &orig) const
Definition: vrfComponentProcessorInterface.h:108
virtual bool componentDiscovered(const DtFrameStateInterface *)
Creates/removes agents for data.
makVrv::DtSimEntryUpdater::UpdateRate myRate
Definition: vrfComponentProcessorInterface.h:153
tbb::spin_rw_mutex myMutex
Definition: vrfComponentProcessorInterface.h:163
std::set< const DtFrameStateInterface * > myFrameStateInterfaces
Definition: vrfComponentProcessorInterface.h:123
virtual ~DtVrfComponentProcessor()
DTOR.
virtual void queueFunction(const boost::function< void()> &function)
Put a function in the sim function queue, for threadsafe calling.
virtual Legion::UInt64 legionIdFromVantageId(makVrv::DtUniqueID lid) const override
ComponentUpdater(const ComponentUpdater &orig)
Definition: vrfComponentProcessorInterface.h:91
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
unsigned long long UInt64
Definition: stateDataTypes.h:17
DtBalanacedUpdater updates updatee classes at a desired rate in a fair (each instance gets the same n...
Definition: DtBalancedUpdater.h:26
virtual bool shouldForceObjectUpdate(const DtFrameStateInterface *) const
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
void update(double)
Definition: vrfComponentProcessorInterface.h:113
DtTimedSection myTimer
Definition: vrfComponentProcessorInterface.h:135
ComponentUpdater(const std::set< const DtFrameStateInterface * > &listener, makVrv::DtSimStateObjectAgent &driver, DtComponentProcessorInterface &iface)
Definition: vrfComponentProcessorInterface.h:82
Definition: stateComponent.h:51
virtual void dataDiscoveredByLegionId(Legion::UInt64 lid)
#define DT_DLL_vrfGuiNetworkCommon
This file is used to determine how to build.
Definition: vrfGuiNetworkCommonDefines.h:24
virtual void destroyAgent(makVrv::DtSimStateObjectAgent *agent, const DtFrameStateInterface *sc)
UpdateGroupMap myRefreshRateGroups
Definition: vrfComponentProcessorInterface.h:141
makVrv::DtSimStateObjectAgent * myAgent
Definition: vrfComponentProcessorInterface.h:152
virtual void vantageIdMapped(makVrv::DtUniqueID, Legion::UInt64)
virtual void componentRemoved(UInt64, makVrv::DtUniqueID, const DtFrameStateInterface *)
virtual void componentUpdated(const DtFrameStateInterface *)
virtual void setObjectUpdateRate(makVrv::DtUniqueID uniqueId, makVrv::DtSimEntryUpdater::UpdateRate rate)
Set a particular object update.
virtual void createAndSendState(const std::set< const DtFrameStateInterface * > &, makVrv::DtSimStateObjectAgent &, bool force=false)=0
EntityIdList myForceUpdateList
Definition: vrfComponentProcessorInterface.h:144
std::map< makVrv::DtSimEntryUpdater::UpdateRate, UpdaterGroup > UpdateGroupMap
Definition: vrfComponentProcessorInterface.h:139
virtual makVrv::DtUniqueID vantageIdFromLegionId(Legion::UInt64) const override
boost::signals2::connection myVantageToLegionIdMapperConnection
Definition: vrfComponentProcessorInterface.h:159
AgentMap myAgents
Definition: vrfComponentProcessorInterface.h:157
std::map< makVrv::DtUniqueID, ComponentInstance > AgentMap
Definition: vrfComponentProcessorInterface.h:156
virtual void queueStateComponentDiscovered(const DtStateComponent *)
Call this method to queue a state component discovered or removed.
This is a simple base class that will be used to return a pointer to current or next frame state...
Definition: stateComponent.h:291
DtVrfComponentProcessor(DtStateDataManager *, makVrv::DtBaseConnection &)
CTOR.
Definition: vrfComponentProcessorInterface.h:78
virtual void stateComponentDiscovered(const DtStateComponent *, UInt64)
Calls DtFrameStateInterface versions.
virtual makVrv::DtUniqueID vantageIdFromLegionId(Legion::UInt64 lid) const =0
Definition: vrfComponentProcessorInterface.h:23
ComponentUpdater & operator=(const ComponentUpdater &orig)
Definition: vrfComponentProcessorInterface.h:98
DtComponentProcessorInterface * myDataProcessorInterface
Definition: vrfComponentProcessorInterface.h:125
Definition: vrfComponentProcessorInterface.h:31
This class holds the state data that represents each simulation object in the system.
Definition: stateDataManager.h:73
std::set< makVrv::DtUniqueID > EntityIdList
Definition: vrfComponentProcessorInterface.h:143

Document ID: Generated on Tue Sep 24 19:28:17 EDT 2024 from SVN revision 269799
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)