VR-Forces 4.0.4 Class Documentation
include/vrfGuiCore/DtVrfBackendState.h
Go to the documentation of this file.
00001 /******************************************************************************
00002 ** Copyright (c) 2008 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 ******************************************************************************/
00005 /******************************************************************************
00006 ** $RCSfile: DtVrfBackendState.h,v $ $Revision: 1.3 $ $State: Exp $
00007 ******************************************************************************/
00008 
00011 
00013 
00014 #pragma once
00015 
00016 #include <vrfGuiCore/vrfGuiCore.h>
00017 
00018 #include <vrvUtil/signalslib.h>
00019 
00020 #include <vrvCore/DtSimStateObject.h>
00021 #include <vrvCore/DtSimState.h>
00022 #include <vrvCore/DtSimEntry.h>
00023 #include <vrvCore/DtStateView.h>
00024 
00025 #include <vlpi/simulationAddress.h>
00026 
00027 #include <map>
00028 
00030 #include <vrfutil/backend.h>
00031 
00032 namespace makVrv
00033 {
00034    class DtMessage;
00035 }
00036 
00037 class DtSimMessage;
00038 
00039 namespace makVrf 
00040 {
00041    enum DtBackendChangedStates
00042    {
00043       DtBackendLoadedState =     0x00000001,
00044       DtBackendSimTime =         0x00000002,
00045       DtBackendExerciseTime =    0x00000004,
00046       DtBackendCanSimulate =     0x00000008,
00047       DtBackendControlState =    0x00000010,
00048       DtBackendSaving =          0x00000020,
00049       DtBackendAdded =           0x00000040,
00050       DtBackendRemoved =         0x00000080,
00051       DtBackendLoadedNewScenario = 0x00000100
00052    };
00053 
00054    class DT_DLL_VRFGUICORE DtVrfBackendState : public makVrv::DtSimState
00055    {
00056    public:
00057       DtVrfBackendState(makVrv::DtDe& de)
00058       : mySaving(false)
00059       , myDe(de)
00060       , myFrameRateReportPeriod(1)
00061       , mySampleSize(50)
00062       , myMonitoringReference(0)
00063       , myFrameRateMean(0)
00064       , myFrameRateMedian(0)
00065       , myFrameStandardDeviation(0)
00066       , myMinFrameRate(0)
00067       , myMaxFrameRate(0)
00068       , mySimTimeToRealTimeRatio(0)
00069       {
00070       }
00071 
00072       DtVrfBackendState(makVrv::DtDe& de, const DtBackend& b)
00073       : myBackend(b)
00074       , myDe(de)
00075       , mySaving(false)
00076       , myFrameRateReportPeriod(1)
00077       , mySampleSize(50)
00078       , myMonitoringReference(0)
00079       , myFrameRateMean(0)
00080       , myFrameRateMedian(0)
00081       , myFrameStandardDeviation(0)
00082       , myMinFrameRate(0)
00083       , myMaxFrameRate(0)
00084       , mySimTimeToRealTimeRatio(0)
00085       {
00086       }
00087 
00088       DtVrfBackendState(const DtVrfBackendState& o)
00089       : myBackend(o.myBackend)
00090       , mySaving(o.mySaving)
00091       , myDe(o.myDe)
00092       , myFrameRateMean(o.myFrameRateMean)
00093       , myFrameRateMedian(o.myFrameRateMedian)
00094       , myFrameStandardDeviation(o.myFrameStandardDeviation)
00095       , myMinFrameRate(o.myMinFrameRate)
00096       , myMaxFrameRate(o.myMaxFrameRate)
00097       , mySimTimeToRealTimeRatio(o.mySimTimeToRealTimeRatio)
00098       {
00099          if (o.myMonitoringReference)
00100          {
00101             myMonitoringReference = o.myMonitoringReference;
00102             (*myMonitoringReference)++;
00103          }
00104       }
00105 
00106       virtual ~DtVrfBackendState();
00107 
00108       DtVrfBackendState& operator=(const DtVrfBackendState& rhs);
00109 
00110       std::string displayName() const
00111       {
00112          return myBackend.address().string();
00113       }
00114 
00115       const DtBackend& backend() const
00116       {
00117          return myBackend;
00118       }
00119 
00120       DtBackend& backend()
00121       {
00122          return myBackend;
00123       }
00124 
00125       void setBackend(const DtBackend& b)
00126       {
00127          myBackend = b;
00128       }
00129 
00130       void setSaving(bool b)
00131       {
00132          mySaving = b;
00133       }
00134 
00135       bool saving() const
00136       {
00137          return mySaving;
00138       }
00139 
00140       virtual void startFrameRateMonitor();
00141       virtual void stopFrameRateMonitor();
00142 
00143       boost::signal<void (const DtVrfBackendState&)> signal_frameRatesUpdated;
00144 
00145    public:
00146       double frameRateMean() const
00147       {
00148          return myFrameRateMean;
00149       }
00150 
00151       double frameRateMedian() const
00152       {
00153          return myFrameRateMedian;
00154       }
00155 
00156       double frameRateStandardDeviation() const
00157       {
00158          return myFrameStandardDeviation;
00159       }
00160 
00161       double frameRateMin() const
00162       {
00163          return myMinFrameRate;
00164       }
00165 
00166       double frameRateMax() const
00167       {
00168          return myMaxFrameRate;
00169       }
00170       
00171       double frameRateSimTimeToRealTimeRatio() const
00172       {
00173          return mySimTimeToRealTimeRatio;
00174       }
00175 
00176    protected:
00177       virtual void processFrameRateCallback(DtSimMessage * msg);
00178 
00179    protected:
00180       makVrv::DtDe&  myDe;
00181       DtBackend      myBackend;
00182       bool           mySaving;
00183       double         myFrameRateReportPeriod;
00184       int            mySampleSize;
00185       int*           myMonitoringReference;
00186 
00187       double myFrameRateMean;
00188       double myFrameRateMedian;
00189       double myFrameStandardDeviation;
00190       double myMinFrameRate;
00191       double myMaxFrameRate;
00192       double mySimTimeToRealTimeRatio;
00193    };
00194 
00196    DT_DLL_VRFGUICORE makVrv::DtMessage& operator<<( makVrv::DtMessage& msg,const DtVrfBackendState& state );
00197 
00199    DT_DLL_VRFGUICORE makVrv::DtMessage& operator>>( makVrv::DtMessage& msg, DtVrfBackendState& state );
00200 
00201    typedef makVrv::DtStateView<DtVrfBackendState> DtVrfBackendStateView;
00202 
00203    class DT_DLL_VRFGUICORE DtVrfBackendStateObject : public makVrv::DtSimStateObject
00204    {
00205    public:
00206       DtVrfBackendStateObject(makVrv::DtDe& de, makVrv::DtUniqueID); 
00207  
00209        void setState(DtVrfBackendState& state)
00210        {
00211           DtVrfBackendState* backendState = dynamic_cast<DtVrfBackendState*>(myState);
00212           if(backendState)
00213           {
00214              *backendState = state;
00215 
00216              if(mySimEntry)
00217              {
00218                 mySimEntry->stateUpdated();
00219              }
00220           }
00221        }    
00222 
00223       void setBackend(const DtBackend& b)
00224       {
00225          ((DtVrfBackendState*)myState)->setBackend(b);
00226       }
00227 
00228       const DtVrfBackendState& backend() const
00229       {
00230          return *((DtVrfBackendState*)myState);
00231       }
00232    };
00233 }

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)