VR-Forces 4.2 Class Documentation
DtVrlinkAggregateSimDataProcessor.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2009 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 /*******************************************************************************
6 ** $RCSfile: DtVrlinkAggregateSimDataProcessor.h,v $ $Revision: 1.1 $ $State: Exp $
7 *******************************************************************************/
8 
12 
13 #pragma once
14 
16 
17 #include <vrvVrl/vrvVrl.h>
18 
19 #include <vrvCore/DtSimEntryUpdater.h>
20 #include <vrvCore/DtSimDataProcessorInterface.h>
21 #include <vrvUtil/DtBalancedUpdater.h>
22 #include <vrvUtil/DtSignalConnectionManager.h>
23 
24 #include <vlutil/vlPerformanceStats.h>
25 
26 class DtAggregateStateRepository;
27 
28 namespace makVrv
29 {
30  class DtSimEntryObjectAgent;
31 
32  namespace DT_PROTOCOL_NAMESPACE
33  {
34  class DtVrlinkConnection;
35  class DtAggregateExistenceListener;
37  }
38 }
39 
40 namespace makVrf
41 {
42  class DtAggregateStateObjectAgent;
43 
44  namespace VRF_PROTOCOL_NAMESPACE
45  {
46 
48  class VRF_PROTOCOL_EXPORT DtAggregateSimDataProcessor : public makVrv::DtSimDataProcessorInterface
49  {
50  public:
52  static DtAggregateSimDataProcessor* findInstance(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkConnection& sim);
53 
55  static void registerInstance(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkConnection& sim,DtAggregateSimDataProcessor*);
56 
58  DtAggregateSimDataProcessor(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkConnection& sim);
59 
61  virtual ~DtAggregateSimDataProcessor();
62 
64  void postDrainInput();
65 
67  void setObjectUpdateRate(makVrv::DtUniqueID uniqueId, makVrv::DtSimEntryUpdater::UpdateRate rate);
68 
70  void forceObjectUpdate(makVrv::DtUniqueID uniqueId);
71 
73  void aggregateDiscovered(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkAggregateStateListener& listener);
74 
76  void aggregateToBeDeleted(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkAggregateStateListener& listener);
77 
79  virtual void createAndSendState(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkAggregateStateListener& listener,
80  DtAggregateStateObjectAgent& objectDriver);
81  virtual void setState(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkAggregateStateListener& listener,
83 
84  protected:
85 
86  static void postDrainInput(void* usr);
87 
88  virtual void slot_postUpdateCallback(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkAggregateStateListener&);
89 
90  protected:
91 
92  //A Listener and a driver which will be updated with it.
94  {
95  public:
96 
97  AggregateStateUpdater(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkAggregateStateListener& listener,
98  DtAggregateStateObjectAgent& driver, DtAggregateSimDataProcessor& processor);
99 
101 
102  AggregateStateUpdater& operator=(const AggregateStateUpdater& orig);
103 
104  //Are the updaters equal
105  bool operator==(const AggregateStateUpdater& orig) const;
106 
108  void update(double timeT);
109 
110  protected:
111 
112  makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkAggregateStateListener* myListener;
113  DtAggregateStateObjectAgent* myObjectAgent;
115  };
116 
117  typedef std::vector<makVrv::DtUniqueID> AggregateIdList;
118 
120  {
121  makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkAggregateStateListener* myListener;
122  DtAggregateStateObjectAgent* myAgent;
123  makVrv::DtSimEntryUpdater::UpdateRate myRate;
124  };
125 
126  typedef std::map<makVrv::DtUniqueID,AggregateSimDataInstance > AggregateAgentMap;
127 
128  typedef makVrv::DtBalancedUpdater<AggregateStateUpdater> AggregateUpdaterGroup;
129  typedef std::map<makVrv::DtSimEntryUpdater::UpdateRate,AggregateUpdaterGroup>
131 
132  protected:
133  makVrv::DtSignalConnectionManager myConnections;
134 
135  makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkConnection& mySimulation;
136  makVrv::DT_PROTOCOL_NAMESPACE::DtAggregateExistenceListener& myListener;
137  DtTimedSection myTimer;
138  makVrv::DtSimEntryObjectAgent* mySimEntryAgent;
139 
143 
144  typedef boost::unordered_map<makVrv::DtUniqueID, DtVrlinkSimulatedAggregateState> AggregateStates;
146  };
147  }
148 }

Document ID: Generated on Sun Nov 24 19:49:21 EST 2013 from SVN revision 133924
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)