VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vrfDatabaseLoggerInterface.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2024 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 #pragma once
6 
10 #include <functional>
11 #include <vlpi/simulationAddress.h>
12 
14 class DtSimManager;
15 
30 {
31 public:
32 
35 
36  virtual void initialize(const DtRwDatabaseLoggerConfig& config,
37  const DtSimulationAddress& simAddress,
38  std::unique_ptr<DtVrfDatabaseConnection> conn);
39 
41  virtual bool isEnabled() const = 0;
42 
44  virtual bool isEventEnabled(DtVrfDatabaseEvent::EventType eventType) const = 0;
45 
48  virtual bool logEvent(DtVrfDatabaseEvent::EventType eventType, const DtVrfDatabaseEvent& event) = 0;
49  virtual bool logEvent(DtVrfDatabaseEvent::EventType eventType, DtVrfDatabaseEvent&& event) = 0;
51 
55  virtual bool logEvent(DtVrfDatabaseEvent::EventType eventType, std::function<DtVrfDatabaseEvent()> f) = 0;
56 
59  virtual std::unique_ptr<DtVrfDatabaseEvent> popEvent() = 0;
60 
62  virtual void setScenarioLoadInformation(int runId, const DtFilename& scenarioName,
63  DtTime simTime);
64 
67  virtual void setScenarioRunInformation(const DtFilename& scenarioName,
68  DtTime simTime, DtTime dateAndTimeOfDay, DtTime realWorldTime);
69 
71  virtual void tick(double simTime);
72 
74  virtual unsigned queueSize() { return 999999; };
75 
78  virtual void forceDatabaseUpdate() {};
79 
82  const DtVrfDatabaseConnection* databaseConnection() const;
83  DtVrfDatabaseConnection* databaseConnection();
85 
87  virtual double resourceThresholdPercentage() const { return myResourceThresholdPercentage; };
88  virtual void setResourceThresholdPercentage(double p) { myResourceThresholdPercentage = p; };
89 
90 protected:
91 
94 
95 private:
96 
99 
102 
103 protected:
104 
106  DtSimulationAddress mySimAddress;
107  double mySimTime;
111  int myRunId;
113  double myLogPeriod;
115 
116  std::unique_ptr<DtVrfDatabaseConnection> myDatabaseConnection;
117 };
118 
122 {
123 public:
124 
125  typedef DtVrfDatabaseLoggerInterface* (*DatabaseLoggerCreatorFcn)();
126  typedef DtVrfDatabaseConnection* (*DatabaseConnectionCreatorFcn)();
127 
130  static DtVrfDatabaseLoggerInterface* createLoggerAndConnection(DtSimManager& simManager);
131 
133  static void setDatabaseLoggerCreatorFcn(const DtString& dbLoggerType,
134  DatabaseLoggerCreatorFcn fcn);
135 
137  static void setDatabaseConnectionCreatorFcn(const DtString& dbConnType,
138  DatabaseConnectionCreatorFcn fcn);
139 
140 protected:
141 
142  static std::map<DtString, DatabaseLoggerCreatorFcn>& loggerCreators();
143  static std::map<DtString, DatabaseConnectionCreatorFcn>& connectionCreators();
144 
145 private:
146 
151 };
152 
156 {
157 public:
158 
161 
163  virtual ~DtNullDatabaseLogger() override {};
164 
166  virtual bool isEnabled() const override { return false; };
167 
169  virtual bool isEventEnabled(DtVrfDatabaseEvent::EventType eventType) const override { return false; };
170 
173  virtual bool logEvent(DtVrfDatabaseEvent::EventType eventType, const DtVrfDatabaseEvent& event) override
174  { return true; };
175  virtual bool logEvent(DtVrfDatabaseEvent::EventType eventType, DtVrfDatabaseEvent&& event) override { return true; };
176  virtual bool logEvent(DtVrfDatabaseEvent::EventType eventType, std::function<DtVrfDatabaseEvent()> f) override
177  { return true; };
178  virtual std::unique_ptr<DtVrfDatabaseEvent> popEvent() override { return std::unique_ptr<DtVrfDatabaseEvent>(); };
180 
183 
185  static DtString type() { return "null-database-logger"; };
186 
187 private:
188 
191 
194 
195 };
196 
197 
virtual void setResourceThresholdPercentage(double p)
Definition: vrfDatabaseLoggerInterface.h:88
int myRunId
Definition: vrfDatabaseLoggerInterface.h:111
DtVrfDatabaseLoggerInterface & operator=(const DtVrfDatabaseLoggerInterface &other)
Assignment Operator not implemented – Do Not copy.
virtual bool logEvent(DtVrfDatabaseEvent::EventType eventType, const DtVrfDatabaseEvent &event) override
No-op.
Definition: vrfDatabaseLoggerInterface.h:173
double mySimTime
Definition: vrfDatabaseLoggerInterface.h:107
virtual bool isEnabled() const override
Logging is not enabled if using this logger.
Definition: vrfDatabaseLoggerInterface.h:166
virtual bool isEventEnabled(DtVrfDatabaseEvent::EventType eventType) const override
Logging is not enabled if using this logger.
Definition: vrfDatabaseLoggerInterface.h:169
virtual bool logEvent(DtVrfDatabaseEvent::EventType eventType, std::function< DtVrfDatabaseEvent()> f) override
No-op.
Definition: vrfDatabaseLoggerInterface.h:176
std::unique_ptr< DtVrfDatabaseConnection > myDatabaseConnection
Definition: vrfDatabaseLoggerInterface.h:116
The database logger which is used when no logger is configured. It does nothing with logged events...
Definition: vrfDatabaseLoggerInterface.h:155
Static creator class which creates the database logger and database connection to be used...
Definition: vrfDatabaseLoggerInterface.h:121
EventType
The unique event types for different types of data that will be logged by VRF. Each event type will g...
Definition: vrfDatabaseEvent.h:28
double myLogPeriod
Definition: vrfDatabaseLoggerInterface.h:113
Contains the configuration options for the database logger.
Definition: rwDatabaseLoggerConfig.h:22
The base class for database loggers. A database logger is responsible for logging database events int...
Definition: vrfDatabaseLoggerInterface.h:29
double myResourceThresholdPercentage
Definition: vrfDatabaseLoggerInterface.h:105
DtString myScenarioName
Definition: vrfDatabaseLoggerInterface.h:112
virtual ~DtNullDatabaseLogger() override
Destructor.
Definition: vrfDatabaseLoggerInterface.h:163
double myRealWorldTimeStart
Definition: vrfDatabaseLoggerInterface.h:109
static DtVrfDatabaseLoggerInterface * create()
Creator function for this class.
Definition: vrfDatabaseLoggerInterface.h:182
static DtString type()
Type of this database logger.
Definition: vrfDatabaseLoggerInterface.h:185
DtNullDatabaseLogger()
Constructor.
Definition: vrfDatabaseLoggerInterface.h:160
virtual bool logEvent(DtVrfDatabaseEvent::EventType eventType, DtVrfDatabaseEvent &&event) override
No-op.
Definition: vrfDatabaseLoggerInterface.h:175
virtual std::unique_ptr< DtVrfDatabaseEvent > popEvent() override
No-op.
Definition: vrfDatabaseLoggerInterface.h:178
virtual double resourceThresholdPercentage() const
The percentage of full by which a resource value must change before an update is logged.
Definition: vrfDatabaseLoggerInterface.h:87
virtual void forceDatabaseUpdate()
Forces all pending events to be written to the database. Normally it is not necessary to call this...
Definition: vrfDatabaseLoggerInterface.h:78
The base class for all database connections. The database connection is responsible for reading queue...
Definition: vrfDatabaseConnection.h:26
bool myScenarioRunInfoSet
Definition: vrfDatabaseLoggerInterface.h:110
The simulation engine is controlled by a single,top-level class called the Simulation Manager...
Definition: simManager.h:137
double myNextLogTime
Definition: vrfDatabaseLoggerInterface.h:114
Represents a single event to be recorded in the database. Anytime something occurs that requires data...
Definition: vrfDatabaseEvent.h:22
virtual unsigned queueSize()
The number of events currently queued to be logged to the database.
Definition: vrfDatabaseLoggerInterface.h:74
#define DT_DLL_vrfMsgTransport
This file is used to determine how to build Disable inconsistent dll linkage warning Visual Studio 6...
Definition: vrfCommunicationManagerDefines.h:26
double myDateAndTimeStart
Definition: vrfDatabaseLoggerInterface.h:108
DtSimulationAddress mySimAddress
Definition: vrfDatabaseLoggerInterface.h:106

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)