VR-Forces 4.2 Class Documentation
DtIffSimDataProcessor.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2012 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 /*******************************************************************************
6 ** $RCSfile: DtVrlinkIffSimDataProcessor.h,v $ $Revision: 1.1 $ $State: Exp $
7 *******************************************************************************/
8 
12 
13 #pragma once
14 
16 
18 
19 #include <vrvCore/DtSimEntryUpdater.h>
20 #include <vrvCore/DtSimDataProcessorInterface.h>
21 #include <vrvUtil/DtBalancedUpdater.h>
22 #include <vrvUtil/DtSignalConnectionManager.h>
23 
24 namespace makVrv
25 {
26  class DtSimEntryObjectAgent;
27 
28  namespace DT_PROTOCOL_NAMESPACE
29  {
30  class DtVrlinkConnection;
31  class DtEntityElementProcessor;
32  }
33 }
34 
35 namespace makVrf
36 {
37  class DtIffStateObjectAgent;
38 
39  namespace VRF_PROTOCOL_NAMESPACE
40  {
41  class DtIffExistenceListener;
42  class DtVrlinkIffStateListener;
43 
45  class VRF_PROTOCOL_EXPORT DtIffSimDataProcessor : public makVrv::DtSimDataProcessorInterface
46  {
47  public:
49  static DtIffSimDataProcessor* findInstance(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkConnection& sim);
50 
52  static void registerInstance(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkConnection& sim,DtIffSimDataProcessor*);
53 
55  DtIffSimDataProcessor(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkConnection& sim);
56 
58  virtual ~DtIffSimDataProcessor();
59 
61  virtual void postDrainInput();
62 
64  virtual void setObjectUpdateRate(makVrv::DtUniqueID uniqueId, makVrv::DtSimEntryUpdater::UpdateRate rate);
65 
67  virtual void forceObjectUpdate(makVrv::DtUniqueID uniqueId);
68 
70  virtual void iffDiscovered(DtVrlinkIffStateListener& listener);
71 
73  virtual void iffToBeDeleted(DtVrlinkIffStateListener& listener);
74 
75  virtual void entityToBeDeleted(makVrv::DtEntityStateListener& listener);
76 
78  virtual void createAndSendState(makVrv::DtElementID entity,
79  DtIffStateObjectAgent& objectDriver);
80  virtual void setState(DtVrlinkIffStateListener& listener,
81  DtIffStateDataEntry& state);
82 
83  boost::signal<void (makVrv::DtUniqueID, DtIffStateData)> signal_stateUpdated;
84  boost::signal<void (makVrv::DtUniqueID, DtIffStateData)> signal_stateAdded;
85 
86  protected:
87 
88  static void postDrainInput(void* usr);
89 
90  virtual void slot_postUpdateCallback(DtVrlinkIffStateListener&);
91 
92  protected:
93 
94  //A Listener and a driver which will be updated with it.
96  {
97  public:
98 
99  IffStateUpdater(makVrv::DtElementID,
100  DtIffStateObjectAgent& driver, DtIffSimDataProcessor& processor);
101 
102  IffStateUpdater(const IffStateUpdater& orig);
103 
104  IffStateUpdater& operator=(const IffStateUpdater& orig);
105 
106  //Are the updaters equal
107  bool operator==(const IffStateUpdater& orig) const;
108 
110  void update(double timeT);
111 
112  protected:
113 
114  makVrv::DtElementID myEntity;
115  DtIffStateObjectAgent* myObjectAgent;
117  };
118 
119  typedef std::vector<makVrv::DtUniqueID> IffIdList;
120 
121  typedef std::map<DtString, DtVrlinkIffStateListener*> IffListeners;
123  {
125  DtIffStateObjectAgent* myAgent;
126  std::string myHostId;
127  makVrv::DtSimEntryUpdater::UpdateRate myRate;
128  };
129 
130  typedef std::map<makVrv::DtUniqueID,IffSimDataInstance > IffAgentMap;
131 
132  typedef makVrv::DtBalancedUpdater<IffStateUpdater> IffUpdaterGroup;
133  typedef std::map<makVrv::DtSimEntryUpdater::UpdateRate,IffUpdaterGroup>
135 
136  protected:
137  makVrv::DtSignalConnectionManager myConnections;
138 
139  makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkConnection& mySimulation;
140  makVrv::DT_PROTOCOL_NAMESPACE::DtEntityElementProcessor* myEntityElementProcessor;
142  DtTimedSection myTimer;
143  makVrv::DtSimEntryObjectAgent* mySimEntryAgent;
144 
148 
149  typedef std::map<makVrv::DtUniqueID, DtIffStateData> IffStates;
151  };
152  }
153 }

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)