VR-Forces 4.2 Class Documentation
DtVrfObjectDataStateProcessor.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2009 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 /******************************************************************************
6 ** $RCSfile: DtVrfObjectDataStateProcessor.h,v $ $Revision: 1.1 $ $State: Exp $
7 ******************************************************************************/
8 
12 
13 #pragma once
14 
15 #include <vrfGuiCore/DtVrfObjectDataStateObjectAgent.hpp>
16 
17 #include <vrvVrl/vrvVrl.h>
18 //#include <vrvCore/DtSimDataProcessor.h>
19 #include <vrvVrl/DtEntityExistenceListener.h>
20 #include <vrvVrl/DtVrlinkEntityStateListener.h>
21 
22 #include <vrvUtil/DtBalancedUpdater.h>
23 #include <vrvUtil/DtSignalConnectionManager.h>
24 #include <vrvCore/DtSimEntryObjectAgent.hpp>
25 
26 namespace makVrv
27 {
29 
30  namespace DT_PROTOCOL_NAMESPACE
31  {
32  class DtEntityExistenceListener;
33  class DtStateListenerInterface;
34  }
35 }
36 
37 namespace makVrf
38 {
39  namespace VRF_PROTOCOL_NAMESPACE
40  {
42  class DtVrfObjectDataStateProcessor : public makVrv::DtVirtualBaseClass
43  {
44  public:
45 
47  static DtVrfObjectDataStateProcessor* findInstance(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkConnection& sim);
48 
50  static void registerInstance(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkConnection& sim,DtVrfObjectDataStateProcessor*);
51 
53  DtVrfObjectDataStateProcessor(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkConnection& sim, int sessionId, int messageVersion);
54 
57 
59  void postDrainInput();
60 
62  void setObjectUpdateRate(makVrv::DtUniqueID uniqueId, makVrv::DtSimEntryUpdater::UpdateRate rate);
63 
65  void forceObjectUpdate(makVrv::DtUniqueID uniqueId);
66 
68  void entityDiscovered(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkEntityStateListener& listener);
69 
71  void entityToBeDeleted(makVrv::DtEntityStateListener& listener);
72 
74  virtual void createAndSendState(makVrv::DtEntityStateListener& listener,
75  makVrv::DtSimStateObjectAgent& objectDriver);
76 
77  boost::signal<void (makVrv::DtUniqueID, DtVrfObjectDataState&) > signal_stateUpdated;
78 
79  protected:
80 
82  static void postDrainInput(void* usr);
83  void slot_postUpdateCallback(makVrv::DtEntityStateListener& listener);
85 
86  protected:
87 
88  //A Listener and a driver which will be updated with it.
90  {
91  public:
92 
93  VrfObjectDataStateUpdater(makVrv::DtEntityStateListener& listener,
94  DtVrfObjectDataStateObjectAgent& driver, DtVrfObjectDataStateProcessor&);
95 
97 
99 
100  //Are the updaters equal
101  bool operator==(const VrfObjectDataStateUpdater& orig) const;
102 
104  void update(double timeT);
105 
106  protected:
107 
108  makVrv::DtEntityStateListener* myListener;
109  DtVrfObjectDataStateObjectAgent* myObjectAgent;
111  };
112 
113  typedef std::vector<makVrv::DtUniqueID> EntityIdList;
114 
116  {
117  makVrv::DtEntityStateListener* myListener;
118  DtVrfObjectDataStateObjectAgent* myAgent;
119  makVrv::DtSimEntryUpdater::UpdateRate myRate;
120  };
121 
122  typedef std::map<makVrv::DtUniqueID,EntitySimDataInstance > EntityAgentMap;
123 
124  typedef makVrv::DtBalancedUpdater<VrfObjectDataStateUpdater> EntityUpdaterGroup;
125  typedef std::map<makVrv::DtSimEntryUpdater::UpdateRate,EntityUpdaterGroup>
127 
128  protected:
129 
130  makVrv::DtSignalConnectionManager myConnections;
131 
132  makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkConnection& mySimulation;
133  makVrv::DT_PROTOCOL_NAMESPACE::DtEntityExistenceListener& myListener;
134  DtTimedSection myTimer;
135  makVrv::DtSimEntryObjectAgent* mySimEntryAgent;
136 
140 
141  std::map<makVrv::DtUniqueID, DtVrfObjectDataState> myCache;
142 
145  };
146  }
147 }

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)