VR-Forces 4.2 Class Documentation
DtVrfBackendState.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
10 
11 #pragma once
12 
13 #include <vrfGuiCore/vrfGuiCore.h>
14 
15 #include <vrvUtil/signalslib.h>
16 
17 #include <vrvCore/DtSimStateObject.h>
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,
50  };
51 
52  class DT_DLL_VRFGUICORE DtVrfBackendState : public makVrv::DtSimState
53  {
54  public:
55  DtVrfBackendState(makVrv::DtDe& de)
56  : mySaving(false)
57  , myDe(de)
58  , myFrameRateReportPeriod(1)
59  , mySampleSize(50)
60  , myMonitoringReference(0)
61  , myFrameRateMean(0)
62  , myFrameRateMedian(0)
63  , myFrameStandardDeviation(0)
64  , myMinFrameRate(0)
65  , myMaxFrameRate(0)
66  , mySimTimeToRealTimeRatio(0)
67  {
68  }
69 
70  DtVrfBackendState(makVrv::DtDe& de, const DtBackend& b)
71  : myBackend(b)
72  , myDe(de)
73  , mySaving(false)
74  , myFrameRateReportPeriod(1)
75  , mySampleSize(50)
76  , myMonitoringReference(0)
77  , myFrameRateMean(0)
78  , myFrameRateMedian(0)
79  , myFrameStandardDeviation(0)
80  , myMinFrameRate(0)
81  , myMaxFrameRate(0)
82  , mySimTimeToRealTimeRatio(0)
83  {
84  }
85 
87  : myBackend(o.myBackend)
88  , mySaving(o.mySaving)
89  , myDe(o.myDe)
90  , myFrameRateMean(o.myFrameRateMean)
91  , myFrameRateMedian(o.myFrameRateMedian)
92  , myFrameStandardDeviation(o.myFrameStandardDeviation)
93  , myMinFrameRate(o.myMinFrameRate)
94  , myMaxFrameRate(o.myMaxFrameRate)
95  , mySimTimeToRealTimeRatio(o.mySimTimeToRealTimeRatio)
96  {
98  {
99  myMonitoringReference = o.myMonitoringReference;
100  (*myMonitoringReference)++;
101  }
102  }
103 
104  virtual ~DtVrfBackendState();
105 
106  DtVrfBackendState& operator=(const DtVrfBackendState& rhs);
107 
108  std::string displayName() const
109  {
110  return myBackend.address().string();
111  }
112 
113  const DtBackend& backend() const
114  {
115  return myBackend;
116  }
117 
118  DtBackend& backend()
119  {
120  return myBackend;
121  }
122 
123  void setBackend(const DtBackend& b)
124  {
125  myBackend = b;
126  }
127 
128  void setSaving(bool b)
129  {
130  mySaving = b;
131  }
132 
133  bool saving() const
134  {
135  return mySaving;
136  }
137 
138  virtual void startFrameRateMonitor();
139  virtual void stopFrameRateMonitor();
140 
141  boost::signal<void (const DtVrfBackendState&)> signal_frameRatesUpdated;
142 
143  public:
144  double frameRateMean() const
145  {
146  return myFrameRateMean;
147  }
148 
149  double frameRateMedian() const
150  {
151  return myFrameRateMedian;
152  }
153 
154  double frameRateStandardDeviation() const
155  {
156  return myFrameStandardDeviation;
157  }
158 
159  double frameRateMin() const
160  {
161  return myMinFrameRate;
162  }
163 
164  double frameRateMax() const
165  {
166  return myMaxFrameRate;
167  }
168 
169  double frameRateSimTimeToRealTimeRatio() const
170  {
171  return mySimTimeToRealTimeRatio;
172  }
173 
174  protected:
175  virtual void processFrameRateCallback(DtSimMessage * msg);
176 
177  protected:
178  makVrv::DtDe& myDe;
180  bool mySaving;
184 
191  };
192 
194  DT_DLL_VRFGUICORE makVrv::DtMessage& operator<<( makVrv::DtMessage& msg,const DtVrfBackendState& state );
195 
197  DT_DLL_VRFGUICORE makVrv::DtMessage& operator>>( makVrv::DtMessage& msg, DtVrfBackendState& state );
198 
199  typedef makVrv::DtStateView<DtVrfBackendState> DtVrfBackendStateView;
200 
201  class DT_DLL_VRFGUICORE DtVrfBackendStateObject : public makVrv::DtSimStateObject
202  {
203  public:
204  DtVrfBackendStateObject(makVrv::DtDe& de, makVrv::DtUniqueID);
205 
207  void setState(DtVrfBackendState& state)
208  {
209  DtVrfBackendState* backendState = dynamic_cast<DtVrfBackendState*>(myState);
210  if(backendState)
211  {
212  *backendState = state;
213 
214  if(mySimEntry)
215  {
216  mySimEntry->stateUpdated();
217  }
218  }
219  }
220 
221  void setBackend(const DtBackend& b)
222  {
223  ((DtVrfBackendState*)myState)->setBackend(b);
224  }
225 
226  const DtVrfBackendState& backend() const
227  {
228  return *((DtVrfBackendState*)myState);
229  }
230  };
231 }

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)