Conscience Core
entityEvents.h
Go to the documentation of this file.
1 #ifndef entityEvents_h
2 #define entityEvents_h
3 
7 
10 using namespace conscience_core::ai::alerts;
11 
13 
14 namespace {
15 const string CORE_EVENTS_HANDLER_ID = "CscEntityEventHandlerRegisterInHistory";
16 }
17 
19 public:
20  const string entitySerialNumber;
21  CscEntityEvent(const string &serialNumber);
22 
23  virtual map<string, string> getParameters() const;
24  virtual string toString() const = 0;
25 };
26 
28 public:
29  CscEntityStreamBrokenEvent(const string &serialNumber);
30 
31  virtual string toString() const override;
32 };
33 
35 public:
37  CscAlertDetectedEvent(const string &serialNumber, CscAlertType type);
38 
39  virtual map<string, string> getParameters() const override;
40  virtual string toString() const override;
41 };
42 
44 public:
45  static CscEntityEventHandlerRegisterInHistory *getInstance();
46 
51  void start();
52 private:
54  inline static CscEntityEventHandlerRegisterInHistory *instance = nullptr;
55  CscHttpClient &httpClient = CscHttpClient::Instance();
56 
57  bool started = false;
58 
59  template <class TEvent>
60  void registerEventInHistory(const TEvent *event, bool &unregisterAfter) {
61  registerEventInHistoryGeneric(event, unregisterAfter);
62  }
63 
67  template<typename... TEvents>
68  void registerCoreEventHandlers() {
69  CscCoreEvents *coreEvents = CscCoreEvents::getInstance();
70  (coreEvents->registerHandler<CscEntityEventHandlerRegisterInHistory, TEvents>(CORE_EVENTS_HANDLER_ID,
71  this, &CscEntityEventHandlerRegisterInHistory::registerEventInHistory),
72  ...);
73  }
74 
75  void registerEventInHistoryGeneric(const CscEntityEvent *event, bool &unregisterAfter);
76  std::unique_ptr<CscLogger> logger;
77 };
78 
79 }
80 
81 #endif
conscience_core::communication::HTTP::CscHttpClient
Definition: CscHttpClient.h:135
conscience_core::core_objects::events::CscCoreEvents::registerHandler
void registerHandler(const string &handlerId, TObject *handlerObject, void(TObject::*handlerMethod)(const TEvent *event, bool &unregisterAfter), bool deleteObjectOnDestruct=false)
Definition: CscCoreEvents.h:124
CSC_DLL_IMPORTEXPORT
#define CSC_DLL_IMPORTEXPORT
Definition: os.h:34
conscience_core::ai::entity_events::CscAlertDetectedEvent::type
const CscAlertType type
Definition: entityEvents.h:36
conscience_core::communication::HTTP::CscHttpClient::Instance
static CscHttpClient & Instance()
Definition: CscHttpClient.cpp:264
conscience_core::ai::entity_events
Definition: entityEvents.cpp:11
CscCoreEvents.h
conscience_core::ai::alerts
Definition: alerts.cpp:12
conscience_core::ai::entity_events::CscEntityEvent::entitySerialNumber
const string entitySerialNumber
Definition: entityEvents.h:20
conscience_core::ai::entity_events::CscEntityStreamBrokenEvent
Definition: entityEvents.h:27
conscience_core::ai::entity_events::CscEntityEventHandlerRegisterInHistory
Definition: entityEvents.h:43
conscience_core::communication::HTTP
Definition: CscHttpClient.cpp:13
conscience_core::core_objects::events
Definition: CscCoreEvents.cpp:14
conscience_core::ai::entity_events::CscEntityEvent
Definition: entityEvents.h:18
alerts.h
conscience_core::core_objects::events::CscCoreEvent
Definition: CscCoreEvents.h:23
jwt::json::type
type
Generic JSON types used in JWTs.
Definition: jwt.h:1794
conscience_server::entities::instance
ServerEntities * instance
Definition: ServerEntities.cpp:39
conscience_core::communication::logger
static auto logger
Definition: AsioContext.cpp:15
CscHttpClient.h
conscience_core::ai::entity_events::CscAlertDetectedEvent
Definition: entityEvents.h:34
conscience_core::ai::alerts::CscAlertType
uint64_t CscAlertType
Definition: alerts.h:37
conscience_core::core_objects::events::CscCoreEvents
Definition: CscCoreEvents.h:108