VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vrfDatabaseEvent.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 
8 #include <vrfutil/uuid.h>
9 #include <vlutil/vlString.h>
10 #include <matrix/vlVector.h>
11 #include <vlpi/entityType.h>
12 #include <map>
13 #include <string>
14 
16 
23 {
24 public:
25 
28  enum EventType
29  {
30  UnknownEvent = 0,
31  WakeupEvent = 1,
32  ShutdownEvent = 2,
33  InternalStatsEvent = 3,
34  SimEngineEvent = 4,
35  ScenarioRunEvent = 5,
36  DetonationEvent = 6,
37  FireEvent = 7,
38  DamageEvent = 8,
39  ObjectEvent = 9,
40  DetectionEvent = 10,
41  ResourceEvent = 11,
42  EngagementEvent = 12,
43  EngagementAttackEvent = 13,
44  EngagementDefenseEvent = 14,
45  EngagementCasualtyReportEvent = 15,
46  EngagementDamageReportEvent = 16,
47  ScenarioEventEvent = 17,
48  UserEvent = 500
49  };
50 
51  using ParamVector = std::vector<DtVrfDatabaseEventParam*>;
52 
53  static const bool PrimaryKey = true;
54 
56  {
57  InsertOrIgnore = 1,
58  InsertOrUpdate = 2,
59  UpdateExisting = 3
60  };
61 
62 public:
67  DtVrfDatabaseEvent(TableUpdateFlag updateRule = InsertOrIgnore);
69  DtVrfDatabaseEvent(DtVrfDatabaseEvent&& orig) noexcept;
71 
73  virtual ~DtVrfDatabaseEvent();
74 
77  DtVrfDatabaseEvent& operator=(const DtVrfDatabaseEvent&);
78  DtVrfDatabaseEvent& operator=(DtVrfDatabaseEvent&&) noexcept;
80 
83  virtual DtVrfDatabaseEvent::EventType eventType() const { return myEventType; };
84 
86  virtual void setEventType(DtVrfDatabaseEvent::EventType et) { myEventType = et; };
87 
89  virtual TableUpdateFlag updateOrInsert() const { return myUpdateOrInsert; };
90 
105  virtual DtVrfDatabaseEvent& addParameter(const DtString& name, bool p, bool isPrimaryKey = false);
106  virtual DtVrfDatabaseEvent& addParameter(const DtString& name, int p, bool isPrimaryKey = false);
107  virtual DtVrfDatabaseEvent& addParameter(const DtString& name, unsigned p, bool isPrimaryKey = false);
108  virtual DtVrfDatabaseEvent& addParameter(const DtString& name, float p, bool isPrimaryKey = false);
109  virtual DtVrfDatabaseEvent& addParameter(const DtString& name, double p, bool isPrimaryKey = false);
110  virtual DtVrfDatabaseEvent& addParameter(const DtString& name, std::string&& p, bool isPrimaryKey = false);
111  virtual DtVrfDatabaseEvent& addParameter(const DtString& name, const std::string& p, bool isPrimaryKey = false);
112  virtual DtVrfDatabaseEvent& addParameter(const DtString& name, const DtString& p, bool isPrimaryKey = false);
113  virtual DtVrfDatabaseEvent& addParameter(const DtString& name, const DtEntityType& p, bool isPrimaryKey = false);
114  virtual DtVrfDatabaseEvent& addParameter(const DtString& name, const DtEntityIdentifier& p, bool isPrimaryKey = false);
115  virtual DtVrfDatabaseEvent& addParameter(const DtString& name, const DtSimulationAddress& p, bool isPrimaryKey = false);
116  virtual DtVrfDatabaseEvent& addParameter(const DtString& name, const DtUUID& p, bool isPrimaryKey = false);
117  virtual DtVrfDatabaseEvent& addParameter(const DtString& name, const DtVector& p, bool isPrimaryKey = false);
119 
121  virtual const ParamVector& parameters() const { return myParams; };
122 
124  virtual bool hasParameter(const DtString& name) const;
125 
127  virtual void setCreateTableOnly(bool v);
128  virtual bool createTableOnly() const;
129 
133  virtual void setExcludeDefaultScenarioParameters(bool v);
134  virtual bool excludeDefaultScenarioParameters() const;
135 
138  static const std::string& eventTableName(EventType);
139 
145  static void initializeDefaultEventTypes();
146 
150  static void addEventType(unsigned eventType, const std::string& eventTableName);
151 
153  static std::map<EventType, std::string> eventTypeMapping();
154 
158  static const std::map<EventType, DtVrfDatabaseEvent>& eventPrototypes();
159 
161  static DtVrfDatabaseEvent::EventType highestEventType();
162 
166  static void setEventTypeMapping(const std::map<EventType, std::string>& mapping);
167 
174  static void setEventPrototypes(const std::map<EventType, DtVrfDatabaseEvent>& mapping);
175 
176 protected:
177 
179  void copyParameters(const DtVrfDatabaseEvent& orig);
180 
181 protected:
186 
188 
189  static std::map<EventType, std::string> theEventTypeMapping;
190  static std::map<EventType, DtVrfDatabaseEvent> theEventPrototypes;
191 };
192 
193 using DtVrfDatabaseEventUniquePtr = std::unique_ptr<DtVrfDatabaseEvent>;
194 using DtVrfDatabaseEventVector = std::vector<DtVrfDatabaseEventUniquePtr>;
UUID is a unique ID wrapper class.
Definition: uuid.h:59
virtual void setEventType(DtVrfDatabaseEvent::EventType et)
Sets the DtVrfDatabaseEvent::EventType.
Definition: vrfDatabaseEvent.h:86
bool myExcludeDefaultScenarioParameters
Definition: vrfDatabaseEvent.h:185
Contains the DtUUID class declaration.
bool myCreateTableOnly
Definition: vrfDatabaseEvent.h:184
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
std::vector< DtVrfDatabaseEventUniquePtr > DtVrfDatabaseEventVector
Definition: vrfDatabaseEvent.h:194
TableUpdateFlag myUpdateOrInsert
Definition: vrfDatabaseEvent.h:183
virtual TableUpdateFlag updateOrInsert() const
Returns the rule for how this event should be updated or inserted.
Definition: vrfDatabaseEvent.h:89
std::map< DtVrfDatabaseEvent::EventType, DtVrfDatabaseEvent > eventPrototypes()
Returns the list of all default database event prototypes.
Definition: vrfDefaultDatabaseEvents.h:425
virtual const ParamVector & parameters() const
Returns the list of all parameters in this event.
Definition: vrfDatabaseEvent.h:121
static std::map< EventType, DtVrfDatabaseEvent > theEventPrototypes
Definition: vrfDatabaseEvent.h:190
Abstract base class to store the parameter for a DtVrfDatabaseEvent.
Definition: vrfDatabaseEventParam.h:11
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
ParamVector myParams
Definition: vrfDatabaseEvent.h:187
std::vector< DtVrfDatabaseEventParam * > ParamVector
Definition: vrfDatabaseEvent.h:51
static std::map< EventType, std::string > theEventTypeMapping
Definition: vrfDatabaseEvent.h:189
TableUpdateFlag
Definition: vrfDatabaseEvent.h:55
DtVrfDatabaseEvent::EventType myEventType
Definition: vrfDatabaseEvent.h:182
std::unique_ptr< DtVrfDatabaseEvent > DtVrfDatabaseEventUniquePtr
Definition: vrfDatabaseEvent.h:193

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)