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 
28 {
29 public:
30 
33 
34  virtual void initialize(const DtRwDatabaseLoggerConfig& config,
35  const DtSimulationAddress& simAddress,
36  std::unique_ptr<DtVrfDatabaseConnection> conn);
37 
39  virtual bool isEnabled() const = 0;
40 
42  virtual bool isEventEnabled(DtVrfDatabaseEvent::EventType eventType) const = 0;
43 
46  virtual bool logEvent(DtVrfDatabaseEvent::EventType eventType, const DtVrfDatabaseEvent& event) = 0;
47  virtual bool logEvent(DtVrfDatabaseEvent::EventType eventType, DtVrfDatabaseEvent&& event) = 0;
49 
53  virtual bool logEvent(DtVrfDatabaseEvent::EventType eventType, std::function<DtVrfDatabaseEvent()> f) = 0;
54 
57  virtual std::unique_ptr<DtVrfDatabaseEvent> popEvent() = 0;
58 
60  virtual void setScenarioLoadInformation(int runId, const DtFilename& scenarioName,
61  DtTime simTime);
62 
65  virtual void setScenarioRunInformation(const DtFilename& scenarioName,
66  DtTime simTime, DtTime dateAndTimeOfDay, DtTime realWorldTime);
67 
69  virtual void setSimTime(double simTime);
70 
72  virtual unsigned queueSize() { return 999999; };
73 
76  virtual void forceDatabaseUpdate() {};
77 
80  const DtVrfDatabaseConnection* databaseConnection() const;
81  DtVrfDatabaseConnection* databaseConnection();
83 
85  virtual double resourceThresholdPercentage() const { return myResourceThresholdPercentage; };
86  virtual void setResourceThresholdPercentage(double p) { myResourceThresholdPercentage = p; };
87 
88 protected:
89 
92 
93 private:
94 
97 
100 
101 protected:
102 
104  DtSimulationAddress mySimAddress;
105  double mySimTime;
109  int myRunId;
111 
112  std::unique_ptr<DtVrfDatabaseConnection> myDatabaseConnection;
113 };
114 
118 {
119 public:
120 
121  typedef DtVrfDatabaseLoggerInterface* (*DatabaseLoggerCreatorFcn)();
122  typedef DtVrfDatabaseConnection* (*DatabaseConnectionCreatorFcn)();
123 
126  static DtVrfDatabaseLoggerInterface* createLoggerAndConnection(DtSimManager& simManager);
127 
129  static void setDatabaseLoggerCreatorFcn(const DtString& dbLoggerType,
130  DatabaseLoggerCreatorFcn fcn);
131 
133  static void setDatabaseConnectionCreatorFcn(const DtString& dbConnType,
134  DatabaseConnectionCreatorFcn fcn);
135 
136 protected:
137 
138  static std::map<DtString, DatabaseLoggerCreatorFcn>& loggerCreators();
139  static std::map<DtString, DatabaseConnectionCreatorFcn>& connectionCreators();
140 
141 private:
142 
147 };
148 
152 {
153 public:
154 
157 
159  virtual ~DtNullDatabaseLogger() {};
160 
162  virtual bool isEnabled() const { return false; };
163 
165  virtual bool isEventEnabled(DtVrfDatabaseEvent::EventType eventType) const { return false; };
166 
169  virtual bool logEvent(DtVrfDatabaseEvent::EventType eventType, const DtVrfDatabaseEvent& event) { return true; };
170  virtual bool logEvent(DtVrfDatabaseEvent::EventType eventType, DtVrfDatabaseEvent&& event) { return true; };
171  virtual bool logEvent(DtVrfDatabaseEvent::EventType eventType, std::function<DtVrfDatabaseEvent()> f) { return true; };
172  virtual std::unique_ptr<DtVrfDatabaseEvent> popEvent() { return std::unique_ptr<DtVrfDatabaseEvent>(); };
174 
177 
179  static DtString type() { return "null-database-logger"; };
180 
181 private:
182 
185 
188 
189 };
190 
191 
virtual void setResourceThresholdPercentage(double p)
Definition: vrfDatabaseLoggerInterface.h:86
int myRunId
Definition: vrfDatabaseLoggerInterface.h:109
DtVrfDatabaseLoggerInterface & operator=(const DtVrfDatabaseLoggerInterface &other)
Assignment Operator not implemented – Do Not copy.
double mySimTime
Definition: vrfDatabaseLoggerInterface.h:105
virtual ~DtNullDatabaseLogger()
Destructor.
Definition: vrfDatabaseLoggerInterface.h:159
virtual std::unique_ptr< DtVrfDatabaseEvent > popEvent()
No-op.
Definition: vrfDatabaseLoggerInterface.h:172
virtual bool isEnabled() const
Logging is not enabled if using this logger.
Definition: vrfDatabaseLoggerInterface.h:162
std::unique_ptr< DtVrfDatabaseConnection > myDatabaseConnection
Definition: vrfDatabaseLoggerInterface.h:112
The database logger which is used when no logger is configured. It does nothing with logged events...
Definition: vrfDatabaseLoggerInterface.h:151
Static creator class which creates the database logger and database connection to be used...
Definition: vrfDatabaseLoggerInterface.h:117
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
Contains the configuration options for the database logger.
Definition: rwDatabaseLoggerConfig.h:21
The base class for database loggers. A database logger is responsible for logging database events int...
Definition: vrfDatabaseLoggerInterface.h:27
double myResourceThresholdPercentage
Definition: vrfDatabaseLoggerInterface.h:103
DtString myScenarioName
Definition: vrfDatabaseLoggerInterface.h:110
virtual bool logEvent(DtVrfDatabaseEvent::EventType eventType, DtVrfDatabaseEvent &&event)
No-op.
Definition: vrfDatabaseLoggerInterface.h:170
double myRealWorldTimeStart
Definition: vrfDatabaseLoggerInterface.h:107
static DtVrfDatabaseLoggerInterface * create()
Creator function for this class.
Definition: vrfDatabaseLoggerInterface.h:176
static DtString type()
Type of this database logger.
Definition: vrfDatabaseLoggerInterface.h:179
DtNullDatabaseLogger()
Constructor.
Definition: vrfDatabaseLoggerInterface.h:156
virtual bool logEvent(DtVrfDatabaseEvent::EventType eventType, std::function< DtVrfDatabaseEvent()> f)
No-op.
Definition: vrfDatabaseLoggerInterface.h:171
virtual bool isEventEnabled(DtVrfDatabaseEvent::EventType eventType) const
Logging is not enabled if using this logger.
Definition: vrfDatabaseLoggerInterface.h:165
virtual double resourceThresholdPercentage() const
The percentage of full by which a resource value must change before an update is logged.
Definition: vrfDatabaseLoggerInterface.h:85
virtual bool logEvent(DtVrfDatabaseEvent::EventType eventType, const DtVrfDatabaseEvent &event)
No-op.
Definition: vrfDatabaseLoggerInterface.h:169
virtual void forceDatabaseUpdate()
Forces all pending events to be written to the database. Normally it is not necessary to call this...
Definition: vrfDatabaseLoggerInterface.h:76
The base class for all database connections. The database connection is responsible for reading queue...
Definition: vrfDatabaseConnection.h:24
bool myScenarioRunInfoSet
Definition: vrfDatabaseLoggerInterface.h:108
The simulation engine is controlled by a single,top-level class called the Simulation Manager...
Definition: simManager.h:124
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:72
#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:106
DtSimulationAddress mySimAddress
Definition: vrfDatabaseLoggerInterface.h:104

Document ID: Generated on Tue Sep 24 19:28:17 EDT 2024 from SVN revision 269799
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)