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  FuelResourceEvent = 11,
42  WeaponResourceEvent = 12,
43  OtherResourceEvent = 13,
44  UserEvent = 500
45  };
46 
47  using ParamVector = std::vector<DtVrfDatabaseEventParam*>;
48 
49  static const bool PrimaryKey = true;
50 
52  {
53  InsertOrIgnore = 1,
54  InsertOrUpdate = 2,
55  UpdateExisting = 3
56  };
57 
58 public:
63  DtVrfDatabaseEvent(TableUpdateFlag updateRule = InsertOrIgnore);
65  DtVrfDatabaseEvent(DtVrfDatabaseEvent&& orig) noexcept;
67 
69  virtual ~DtVrfDatabaseEvent();
70 
73  DtVrfDatabaseEvent& operator=(const DtVrfDatabaseEvent&);
74  DtVrfDatabaseEvent& operator=(DtVrfDatabaseEvent&&) noexcept;
76 
79  virtual DtVrfDatabaseEvent::EventType eventType() const { return myEventType; };
80 
82  virtual void setEventType(DtVrfDatabaseEvent::EventType et) { myEventType = et; };
83 
85  virtual TableUpdateFlag updateOrInsert() const { return myUpdateOrInsert; };
86 
101  virtual DtVrfDatabaseEvent& addParameter(const DtString& name, bool p, bool isPrimaryKey = false);
102  virtual DtVrfDatabaseEvent& addParameter(const DtString& name, int p, bool isPrimaryKey = false);
103  virtual DtVrfDatabaseEvent& addParameter(const DtString& name, unsigned p, bool isPrimaryKey = false);
104  virtual DtVrfDatabaseEvent& addParameter(const DtString& name, float p, bool isPrimaryKey = false);
105  virtual DtVrfDatabaseEvent& addParameter(const DtString& name, double p, bool isPrimaryKey = false);
106  virtual DtVrfDatabaseEvent& addParameter(const DtString& name, std::string&& p, bool isPrimaryKey = false);
107  virtual DtVrfDatabaseEvent& addParameter(const DtString& name, const std::string& p, bool isPrimaryKey = false);
108  virtual DtVrfDatabaseEvent& addParameter(const DtString& name, const DtString& p, bool isPrimaryKey = false);
109  virtual DtVrfDatabaseEvent& addParameter(const DtString& name, const DtEntityType& p, bool isPrimaryKey = false);
110  virtual DtVrfDatabaseEvent& addParameter(const DtString& name, const DtEntityIdentifier& p, bool isPrimaryKey = false);
111  virtual DtVrfDatabaseEvent& addParameter(const DtString& name, const DtSimulationAddress& p, bool isPrimaryKey = false);
112  virtual DtVrfDatabaseEvent& addParameter(const DtString& name, const DtUUID& p, bool isPrimaryKey = false);
113  virtual DtVrfDatabaseEvent& addParameter(const DtString& name, const DtVector& p, bool isPrimaryKey = false);
115 
117  virtual const ParamVector& parameters() const { return myParams; };
118 
120  virtual bool hasParameter(const DtString& name) const;
121 
123  virtual void setCreateTableOnly(bool v);
124  virtual bool createTableOnly() const;
125 
128  static const std::string& eventTableName(EventType);
129 
135  static void initializeDefaultEventTypes();
136 
140  static void addEventType(unsigned eventType, const std::string& eventTableName);
141 
143  static std::map<EventType, std::string> eventTypeMapping();
144 
148  static const std::map<EventType, DtVrfDatabaseEvent>& eventPrototypes();
149 
151  static DtVrfDatabaseEvent::EventType highestEventType();
152 
156  static void setEventTypeMapping(const std::map<EventType, std::string>& mapping);
157 
164  static void setEventPrototypes(const std::map<EventType, DtVrfDatabaseEvent>& mapping);
165 
166 protected:
167 
169  void copyParameters(const DtVrfDatabaseEvent& orig);
170 
171 protected:
175 
177 
178  static std::map<EventType, std::string> theEventTypeMapping;
179  static std::map<EventType, DtVrfDatabaseEvent> theEventPrototypes;
180 };
181 
182 using DtVrfDatabaseEventUniquePtr = std::unique_ptr<DtVrfDatabaseEvent>;
183 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:82
Contains the DtUUID class declaration.
bool myCreateTableOnly
Definition: vrfDatabaseEvent.h:174
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:183
TableUpdateFlag myUpdateOrInsert
Definition: vrfDatabaseEvent.h:173
virtual TableUpdateFlag updateOrInsert() const
Returns the rule for how this event should be updated or inserted.
Definition: vrfDatabaseEvent.h:85
std::map< DtVrfDatabaseEvent::EventType, DtVrfDatabaseEvent > eventPrototypes()
Returns the list of all default database event prototypes.
Definition: vrfDefaultDatabaseEvents.h:289
virtual const ParamVector & parameters() const
Returns the list of all parameters in this event.
Definition: vrfDatabaseEvent.h:117
static std::map< EventType, DtVrfDatabaseEvent > theEventPrototypes
Definition: vrfDatabaseEvent.h:179
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:176
std::vector< DtVrfDatabaseEventParam * > ParamVector
Definition: vrfDatabaseEvent.h:47
static std::map< EventType, std::string > theEventTypeMapping
Definition: vrfDatabaseEvent.h:178
TableUpdateFlag
Definition: vrfDatabaseEvent.h:51
DtVrfDatabaseEvent::EventType myEventType
Definition: vrfDatabaseEvent.h:172
std::unique_ptr< DtVrfDatabaseEvent > DtVrfDatabaseEventUniquePtr
Definition: vrfDatabaseEvent.h:182

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)