VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vrfDatabaseConnection.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 
9 #include <atomic>
10 #include <thread>
11 
14 
27 {
28 public:
29 
31  virtual ~DtVrfDatabaseConnection();
32 
36  virtual bool initialize(const DtRwDatabaseLoggerConfig& config,
38 
41  virtual void run();
42 
43 protected:
44 
47 
49  virtual bool processConfiguration(const DtRwDatabaseLoggerConfig& config);
50 
52  virtual bool connect() = 0;
53 
55  virtual bool createDatabase() = 0;
56 
58  virtual bool stop();
59 
61  virtual bool createTableForEvent(const DtVrfDatabaseEvent& event) = 0;
62 
65  virtual bool insertOrIgnoreEntriesForEvents(const DtVrfDatabaseEventVector& events) = 0;
66 
69  virtual bool insertOrUpdateEntriesForEvents(const DtVrfDatabaseEventVector& events) = 0;
70 
72  virtual bool updateEntryForEvent(const DtVrfDatabaseEvent& event) = 0;
73 
76  virtual std::string escapeString(std::string str)
77  {
78  return str;
79  };
80 
81 private:
82 
85 
87  DtVrfDatabaseConnection& operator=(const DtVrfDatabaseConnection& other);
88 
89 protected:
90 
92 
93  double myLogPeriod;
94  std::unique_ptr<std::thread> myThread;
95 
96  std::vector<bool> myCreatedTables;
97 
98  std::atomic<bool> myTimeToStop;
99  std::atomic<bool> myStopped;
100 
101  class LogToDatabaseTask;
102  LogToDatabaseTask* myTask;
103 
104 };
105 
109 {
110 public:
111 
113  virtual ~DtVrfNoDatabaseConnection() override {};
114 
118  {
119  return new DtVrfNoDatabaseConnection();
120  };
121 
123  static DtString type()
124  {
125  return "no-database-connection";
126  };
127 
128 protected:
129 
132 
134  virtual bool processConfiguration(const DtRwDatabaseLoggerConfig& config) override { return true; };
135 
137  virtual bool connect() override { return false; }
138 
140  virtual bool createDatabase() override { return false; };
141 
143  virtual bool createTableForEvent(const DtVrfDatabaseEvent& event) override { return false; };
144 
147  virtual bool insertOrIgnoreEntriesForEvents(const DtVrfDatabaseEventVector& events) override { return false; };
148 
151  virtual bool insertOrUpdateEntriesForEvents(const DtVrfDatabaseEventVector& events) override { return false; };
152 
154  virtual bool updateEntryForEvent(const DtVrfDatabaseEvent& event) override { return false; };
155 
156 
157 private:
158 
161 
164 };
165 
166 
virtual bool createTableForEvent(const DtVrfDatabaseEvent &event) override
Creates a table a database table, if necessary.
Definition: vrfDatabaseConnection.h:143
virtual ~DtVrfNoDatabaseConnection() override
Destructor.
Definition: vrfDatabaseConnection.h:113
std::atomic< bool > myStopped
Definition: vrfDatabaseConnection.h:99
static DtVrfDatabaseConnection * create()
Creator function for this class. Should not generally be called directly. Database Connection should ...
Definition: vrfDatabaseConnection.h:117
DtVrfDatabaseLoggerInterface * myDatabaseLogger
Definition: vrfDatabaseConnection.h:91
This is the default database connection that is used if database logging is disabled or no connection...
Definition: vrfDatabaseConnection.h:108
static DtString type()
Type of this connection.
Definition: vrfDatabaseConnection.h:123
virtual std::string escapeString(std::string str)
Takes the given string and escapes it for use in an SQL statement. Default implementation just return...
Definition: vrfDatabaseConnection.h:76
std::vector< DtVrfDatabaseEventUniquePtr > DtVrfDatabaseEventVector
Definition: vrfDatabaseEvent.h:194
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
virtual bool insertOrUpdateEntriesForEvents(const DtVrfDatabaseEventVector &events) override
Logs the given events to the database. NOTE: All events in the list must be of the same event type! ...
Definition: vrfDatabaseConnection.h:151
LogToDatabaseTask * myTask
Definition: vrfDatabaseConnection.h:101
DtVrfDatabaseConnection & operator=(const DtVrfDatabaseConnection &other)
Assignment Operator not implemented – Do Not copy.
std::atomic< bool > myTimeToStop
Definition: vrfDatabaseConnection.h:98
virtual bool insertOrIgnoreEntriesForEvents(const DtVrfDatabaseEventVector &events) override
Logs the given events to the database. NOTE: All events in the list must be of the same event type! ...
Definition: vrfDatabaseConnection.h:147
virtual bool connect() override
Connect to the server.
Definition: vrfDatabaseConnection.h:137
std::unique_ptr< std::thread > myThread
Definition: vrfDatabaseConnection.h:94
virtual bool processConfiguration(const DtRwDatabaseLoggerConfig &config) override
Processes the configuration for this connection.
Definition: vrfDatabaseConnection.h:134
virtual bool createDatabase() override
Creates the database.
Definition: vrfDatabaseConnection.h:140
std::vector< bool > myCreatedTables
Definition: vrfDatabaseConnection.h:96
The base class for all database connections. The database connection is responsible for reading queue...
Definition: vrfDatabaseConnection.h:26
DtVrfNoDatabaseConnection()
Constructor.
Definition: vrfDatabaseConnection.h:131
Represents a single event to be recorded in the database. Anytime something occurs that requires data...
Definition: vrfDatabaseEvent.h:22
#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
virtual bool updateEntryForEvent(const DtVrfDatabaseEvent &event) override
Updates the given event in the database.
Definition: vrfDatabaseConnection.h:154
double myLogPeriod
Definition: vrfDatabaseConnection.h:93

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)