![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2010 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 00008 00012 00013 00014 #pragma once 00015 00016 #include "vrfobjcore/resourceMonitorInfo.h" 00017 #include <vlutil/vlMachineTypes.h> 00018 #include <vlutil/vlString.h> 00019 00020 class DtSimManager; 00021 class DtSimMessage; 00022 class DtSimInterfaceMessage; 00023 class DtVrfObject; 00024 class DtIfResourceMonitorResponse; 00025 class DtSimResource; 00026 class DtIfResourceNamesResponse; 00027 class DtSimulationAddress; 00028 class DtSimCondExpr; 00029 00030 #include <list> 00031 00032 typedef std::list<DtResourceMonitorInfo> DtResourceMonitorList; 00033 00053 00054 #include "vrfobjcore/vrfobjcoreDefines.h" 00055 class DT_DLL_vrfobjcore DtResourceMonitor 00056 { 00057 public: 00061 DtResourceMonitor(); 00062 00064 virtual ~DtResourceMonitor(); 00065 00067 DtResourceMonitor(DtSimManager * simManager); 00068 00070 DtResourceMonitor(const DtResourceMonitor & orig); 00071 00073 const DtResourceMonitor & operator=(const DtResourceMonitor & orig); 00074 00076 virtual bool init(); 00077 00080 void setSimManager(DtSimManager * simManager) { mySimManager = simManager; }; 00081 DtSimManager* simManager() const { return mySimManager; }; 00082 00084 virtual bool registerInterfaceCallbacks(); 00085 00095 virtual void tick(double simTime); 00096 00098 virtual void restart(); 00099 00102 virtual void setEnabled(bool b); 00103 bool enabled() const { return myEnabled; }; 00104 00105 public: 00107 static void resourceMonitorRequestCallback(DtSimMessage* msg, void* usr); 00108 virtual void processResourceMonitorRequest(DtSimInterfaceMessage* msg); 00109 00114 static void currentResourceRequestCallback(DtSimMessage* msg, void* usr); 00115 virtual void processCurrentResourceRequest(DtSimInterfaceMessage* msg); 00117 00120 static void resourceNamesRequestCallback(DtSimMessage* msg, void* usr); 00121 virtual void processResourceNamesRequestCallback(DtSimInterfaceMessage* msg); 00122 00124 static void vrfObjectDeletedCallback(DtSimMessage * msg, void * usr); 00125 virtual void processVrfObjectDeletedCallback(DtSimInterfaceMessage* msg); 00126 00130 void setUpdateOnTick(bool b) { myUpdateOnTick = b; }; 00131 bool updateOnTick() const { return myUpdateOnTick; }; 00132 00136 virtual void resourcesChangedFor(const DtVrfObject*); 00137 const std::list<DtString>& resourcesChangedList() const; 00138 00139 protected: 00142 virtual void publishResourcesFor(DtIfResourceMonitorResponse& response, 00143 DtVrfObject* obj, const std::list<DtString>& resources); 00144 00146 virtual void publishResourceNamesFor(DtIfResourceNamesResponse& response, 00147 DtVrfObject* obj); 00148 00153 virtual void addMonitorResource(const DtEntityIdentifier& id, 00154 const DtString& resourceName, const DtSimulationAddress& sender, 00155 int iMonitorBy, const DtFloat64& iMonitorPeriod, bool stopMonitoring); 00156 00159 virtual DtResourceMonitorList::iterator resourceMonitorInfo(const DtEntityIdentifier& id); 00160 00165 virtual void removeMonitorReference(const DtEntityIdentifier& id, const DtString& resourceName, 00166 const DtSimulationAddress& sender); 00167 00169 virtual void removeMonitorReference(const DtEntityIdentifier& id); 00170 00172 virtual void removeAllMonitorReferencesTo(const DtSimulationAddress& addr); 00173 00176 virtual bool shouldAddResource(const DtSimResource* resourceItem); 00177 00178 virtual bool resourceChanged(const DtString&) const; 00179 00180 protected: 00181 DtSimManager* mySimManager; 00182 DtResourceMonitorList myMonitoringResources; 00183 bool myEnabled; 00184 bool myUpdateOnTick; 00185 00186 std::list<DtString> myResourcesChangedList; 00187 }; 00188 00189 inline const std::list<DtString>& DtResourceMonitor::resourcesChangedList() const 00190 { 00191 return myResourcesChangedList; 00192 } 00193