VR-Forces 5.0.2 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vrfBackendState.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2014 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
10 
11 #pragma once
12 
13 #include <vrfGuiCore/vrfGuiCore.h>
14 
15 
16 
18 #include <vrvCore/DtSimState.h>
19 #include <vrvCore/DtSimEntry.h>
20 #include <vrvCore/DtStateView.h>
21 
22 #include <vlpi/simulationAddress.h>
23 
24 #include <map>
25 
27 #include <vrfutil/backend.h>
28 
29 namespace makVrv
30 {
31  class DtMessage;
32 }
33 
34 class DtSimMessage;
35 
36 namespace makVrf
37 {
39  {
40  DtBackendLoadedState = 0x00000001,
41  DtBackendSimTime = 0x00000002,
42  DtBackendExerciseTime = 0x00000004,
43  DtBackendCanSimulate = 0x00000008,
44  DtBackendControlState = 0x00000010,
45  DtBackendSaving = 0x00000020,
46  DtBackendAdded = 0x00000040,
47  DtBackendRemoved = 0x00000080,
51  DtBackendClosedState = 0x00000800,
57  DtBackendObjectCount = 0x00020000,
67  };
68 
70  {
71  public:
73  : mySaving(false)
74  , myDe(de)
75  , myFrameRateReportPeriod(3)
76  , mySampleSize(50)
77  , myMonitoringReference(0)
78  , mySimTimeToRealTimeRatio(0)
79  , myNumberOfCPUs(0)
80  , myNumberOfTickThreads(0)
81  , myTickingPublishersDuringObjectTick(false)
82  {
83  }
84 
86  : myBackend(b)
87  , myDe(de)
88  , mySaving(false)
89  , myFrameRateReportPeriod(3)
90  , mySampleSize(50)
91  , myMonitoringReference(0)
92  , mySimTimeToRealTimeRatio(0)
93  , myNumberOfCPUs(0)
94  , myNumberOfTickThreads(0)
95  , myTickingPublishersDuringObjectTick(false)
96  {
97  }
98 
100  : myBackend(o.myBackend)
101  , mySaving(o.mySaving)
102  , myDe(o.myDe)
103  , mySectionTimes(o.mySectionTimes)
104  , mySimTimeToRealTimeRatio(o.mySimTimeToRealTimeRatio)
105  , myNumberOfCPUs(o.myNumberOfCPUs)
106  , myNumberOfTickThreads(o.myNumberOfTickThreads)
107  , myTickingPublishersDuringObjectTick(o.myTickingPublishersDuringObjectTick)
108  {
109  if (o.myMonitoringReference)
110  {
111  myMonitoringReference = o.myMonitoringReference;
112  (*myMonitoringReference)++;
113  }
114  }
115 
116  virtual ~DtVrfBackendState();
117 
118  DtVrfBackendState& operator=(const DtVrfBackendState& rhs);
119 
122  {
123  return myBackend.status();
124  }
125 
126  std::string displayName() const
127  {
128  return myBackend.address().string();
129  }
130 
131  const DtBackend& backend() const
132  {
133  return myBackend;
134  }
135 
137  {
138  return myBackend;
139  }
140 
141  void setBackend(const DtBackend& b)
142  {
143  myBackend = b;
144  }
145 
146  void setSaving(bool b)
147  {
148  mySaving = b;
149  }
150 
151  bool saving() const
152  {
153  return mySaving;
154  }
155 
156  void setNumberOfCPUs(short s)
157  {
158  myNumberOfCPUs = s;
159  }
160 
162  {
163  myTickingPublishersDuringObjectTick = s;
164  }
165 
167  {
168  myNumberOfTickThreads = s;
169  }
170 
171  virtual void startFrameRateMonitor(double period = -1);
172  virtual void stopFrameRateMonitor();
173 
174  boost::signals2::signal<void (const DtVrfBackendState&)> signal_frameRatesUpdated;
175 
176  public:
177  int numSections() const;
178  int section(int);
179  double frameRateMean(int section = -1) const;
180  double frameRateMedian(int section = -1) const;
181  double frameRateStandardDeviation(int section = -1) const;
182  double frameRateMin(int section = -1) const;
183  double frameRateMax(int section = -1) const;
184 
186  {
187  return mySimTimeToRealTimeRatio;
188  }
189 
191  {
192  return mySectionTimes;
193  }
194 
196  {
197  return myTickingPublishersDuringObjectTick;
198  }
199 
200  short numberOfCPUs() const
201  {
202  return myNumberOfCPUs;
203  }
204 
205  short numberOfTickThreads() const
206  {
207  return myNumberOfTickThreads;
208  }
209 
210  protected:
211  virtual void processFrameRateCallback(DtSimMessage * msg);
212 
213  protected:
216  bool mySaving;
220 
226  };
227 
230 
233 
235 
237  {
238  public:
240 
243  {
244  DtVrfBackendState* backendState = dynamic_cast<DtVrfBackendState*>(myState);
245  if(backendState)
246  {
247  *backendState = state;
248 
249  if(mySimEntry)
250  {
251  mySimEntry->stateUpdated();
252  }
253  }
254  }
255 
256  void setBackend(const DtBackend& b)
257  {
258  ((DtVrfBackendState*)myState)->setBackend(b);
259  }
260 
261  const DtVrfBackendState& backend() const
262  {
263  return *((DtVrfBackendState*)myState);
264  }
265  };
266 }
makVrv::DtStateView< DtVrfBackendState > DtVrfBackendStateView
Definition: vrfBackendState.h:234
Definition: vrfBackendState.h:48
Definition: vrfBackendState.h:69
int * myMonitoringReference
Definition: vrfBackendState.h:219
Definition: vrfBackendState.h:46
void setBackend(const DtBackend &b)
Definition: vrfBackendState.h:141
The IGI Message. Is easily encoded and decoding using stream operators. It also provides validation d...
Definition: DtMessage.h:30
Definition: vrfBackendState.h:58
DtVrfBackendState(makVrv::DtDe &de)
Definition: vrfBackendState.h:72
Definition: vrfBackendState.h:45
Definition: vrfBackendState.h:65
Definition: vrfBackendState.h:56
makVrv::DtDe & myDe
Definition: vrfBackendState.h:214
const DtBackend & backend() const
Definition: vrfBackendState.h:131
bool tickingPublishersDuringObjectTick() const
Definition: vrfBackendState.h:195
DtBackendChangedStates
Definition: vrfBackendState.h:38
std::map< int, SectionTime > SectionTimes
Definition: backend.h:63
Definition: vrfBackendState.h:47
Contains makVrv::DtStateView class.
Definition: vrfBackendState.h:62
void setBackend(const DtBackend &b)
Definition: vrfBackendState.h:256
void setTickingPublishersDuringObjectTick(bool s)
Definition: vrfBackendState.h:161
Definition: vrfBackendState.h:60
short numberOfCPUs() const
Definition: vrfBackendState.h:200
DtBackend & backend()
Definition: vrfBackendState.h:136
std::string displayName() const
Definition: vrfBackendState.h:126
#define DT_DLL_VRFGUICORE
Contains DLL export macros.
Definition: vrfGuiCore.h:25
Instances of DtBackend are created and maintained by a DtVrfBackendListener, and are containers for d...
Definition: backend.h:51
bool saving() const
Definition: vrfBackendState.h:151
Definition: vrfBackendState.h:57
short myNumberOfCPUs
Definition: vrfBackendState.h:223
Definition: vrfBackendState.h:44
bool mySaving
Definition: vrfBackendState.h:216
double frameRateSimTimeToRealTimeRatio() const
Definition: vrfBackendState.h:185
Definition: vrfBackendState.h:49
Definition: vrfBackendState.h:54
DtBackend myBackend
Definition: vrfBackendState.h:215
void setNumberOfTickThreads(short s)
Definition: vrfBackendState.h:166
Contains makVrv::DtSimEntry class.
const DtVrfBackendState & backend() const
Definition: vrfBackendState.h:261
File: simMsg.h.
Definition: simMessage.h:35
Definition: vrfBackendState.h:55
void setNumberOfCPUs(short s)
Definition: vrfBackendState.h:156
A DtStateView is a the interface to simulation state information. Users can create DtStateViews for s...
Definition: DtStateView.h:49
Definition: vrfBackendState.h:63
int mySampleSize
Definition: vrfBackendState.h:218
Definition: vrfBackendState.h:64
Definition: vrfBackendState.h:50
Definition: vrfBackendState.h:40
bool myTickingPublishersDuringObjectTick
Definition: vrfBackendState.h:225
DtBackend::Status status() const
Current back-end status.
Definition: vrfBackendState.h:121
Definition: vrfBackendState.h:51
Definition: vrfBackendState.h:61
const DtBackend::SectionTimes & sectionTimes() const
Definition: vrfBackendState.h:190
double myFrameRateReportPeriod
Definition: vrfBackendState.h:217
void setState(DtVrfBackendState &state)
Copy state into myState. Tell the DtSimEntry that the state has been updated.
Definition: vrfBackendState.h:242
Contains makVrv::DtSimStateObject class.
DtVrfBackendState(const DtVrfBackendState &o)
Definition: vrfBackendState.h:99
Definition: vrfBackendState.h:66
boost::signals2::signal< void(const DtVrfBackendState &)> signal_frameRatesUpdated
Definition: vrfBackendState.h:174
A DtSimStateObject is the base class for all simulation state objects.
Definition: DtSimStateObject.h:25
DT_DLL_VRFGUICORE makVrv::DtMessage & operator<<(makVrv::DtMessage &msg, const DtVrlinkSimulatedAggregateState &state)
Encode a DtVrlinkSimulatedEnvironmentState into a DtMessage.
A DtSimState is the base class for all state objects. Derived instances of DtSimState will be created...
Definition: DtSimState.h:19
void setSaving(bool b)
Definition: vrfBackendState.h:146
Status
Definition: backend.h:66
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:70
Contains makVrv::DtSimState class.
Definition: vrfBackendState.h:52
Definition: vrfBackendState.h:42
short myNumberOfTickThreads
Definition: vrfBackendState.h:224
DtBackend::SectionTimes mySectionTimes
Definition: vrfBackendState.h:221
double mySimTimeToRealTimeRatio
Definition: vrfBackendState.h:222
Definition: vrfBackendState.h:53
DT_DLL_VRFGUICORE makVrv::DtMessage & operator>>(makVrv::DtMessage &msg, DtVrlinkSimulatedAggregateState &state)
Decode a DtVrlinkSimulatedEnvironmentState from a DtMessage.
Definition: vrfBackendState.h:236
Definition: vrfBackendState.h:41
Definition: vrfBackendState.h:43
DtVrfBackendState(makVrv::DtDe &de, const DtBackend &b)
Definition: vrfBackendState.h:85
short numberOfTickThreads() const
Definition: vrfBackendState.h:205

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)