13#ifndef RTCTK_COMPONENTFRAMEWORK_EVENTDEFINITIONS_HPP
14#define RTCTK_COMPONENTFRAMEWORK_EVENTDEFINITIONS_HPP
18#include <boost/core/demangle.hpp>
25 return boost::core::demangle((
typeid(T).name()));
29 using namespace std::chrono;
30 return duration_cast<nanoseconds>(system_clock::now().time_since_epoch()).count();
53 payload[
"type"] = std::vector<std::string>();
54 payload[
"origin"] =
origin;
55 payload[
"time"] =
time;
70 inline static const std::string
TOPIC_NAME =
"computation_topic";
86 payload[
"type"].push_back(PrettyTypeName<ComputationEvent>());
87 payload[
"item"] =
item;
88 payload[
"state"] =
state;
110 payload[
"type"].push_back(PrettyTypeName<ComputationStartedEvent>());
125 std::string
const&
item,
136 payload[
"type"].push_back(PrettyTypeName<ComputationFinishedEvent>());
137 payload[
"result"] =
result;
151 inline static const std::string
TOPIC_NAME =
"configuration_topic";
158 std::vector<std::string>
const&
items,
159 std::string
const&
state)
169 payload[
"type"].push_back(PrettyTypeName<ConfigurationEvent>());
170 payload[
"items"] =
items;
171 payload[
"state"] =
state;
197 payload[
"type"].push_back(PrettyTypeName<ConfigurationUpdatedEvent>());
220 payload[
"type"].push_back(PrettyTypeName<ConfigurationRetrievedEvent>());
232 std::string
const& item,
251 payload[
"type"].push_back(PrettyTypeName<HrtcConfigurationScheduledEvent>());
269 std::string
const& item,
288 payload[
"type"].push_back(PrettyTypeName<HrtcConfigurationAppliedEvent>());
307 inline static const std::string
TOPIC_NAME =
"coordination_topic";
317 payload[
"type"].push_back(PrettyTypeName<CoordinationEvent>());
328 std::string
const&
entity,
329 std::string
const&
state)
343 payload[
"type"].push_back(PrettyTypeName<StateChangedEvent>());
344 payload[
"state"] =
state;
345 payload[
"entity"] =
entity;
359 std::string
const&
entity,
360 std::string
const&
state,
376 payload[
"type"].push_back(PrettyTypeName<HrtcStateChangedEvent>());
395 inline static const std::string
TOPIC_NAME =
"alert_status_topic";
436 json[
"status"].get_to(
status);
437 for (
auto&& active : json[
"active_alerts"]) {
439 active[
"id"].get_to(alert.
id);
441 active[
"origin"].get_to(alert.
origin);
442 active[
"since"].get_to(alert.
since);
452 payload[
"type"].push_back(PrettyTypeName<AlertStatusEvent>());
453 payload[
"status"] =
status;
456 json_active.push_back(
JsonPayload{{
"origin", alert.origin},
458 {
"description", alert.description},
459 {
"since", alert.since}});
461 payload[
"active_alerts"] = std::move(json_active);
Defines the JSON payload type JsonPayload.
Definition: commandReplier.cpp:22
nlohmann::json JsonPayload
Type requirements:
Definition: jsonPayload.hpp:25
uint64_t GetTimestamp()
Definition: eventDefinitions.hpp:28
std::string PrettyTypeName()
Definition: eventDefinitions.hpp:24
Abstract Event Type that is used as a base for all events.
Definition: eventDefinitions.hpp:42
AbstractEvent(JsonPayload const &payload)
Definition: eventDefinitions.hpp:45
std::string origin
Definition: eventDefinitions.hpp:59
JsonPayload ToJson() const
Definition: eventDefinitions.hpp:51
AbstractEvent(std::string const &origin)
Definition: eventDefinitions.hpp:48
uint64_t time
Definition: eventDefinitions.hpp:60
Represents an active alert originating from a component instance.
Definition: eventDefinitions.hpp:403
std::string origin
Component instance origin.
Definition: eventDefinitions.hpp:407
std::uint64_t since
Timestamp when alert was first made active.
Definition: eventDefinitions.hpp:422
std::string id
Alert identifier which is unique to the origin.
Definition: eventDefinitions.hpp:412
std::string description
Description of alert.
Definition: eventDefinitions.hpp:417
Event published when alert status is changed.
Definition: eventDefinitions.hpp:394
AlertStatusEvent(JsonPayload const &json)
Construct by deserializing from JSON.
Definition: eventDefinitions.hpp:435
static const std::string TOPIC_NAME
Definition: eventDefinitions.hpp:395
JsonPayload ToJson() const
Serialize to JSON.
Definition: eventDefinitions.hpp:450
bool status
Reduced alert status.
Definition: eventDefinitions.hpp:468
AlertStatusEvent(bool st, std::vector< Alert > ac, std::string const &origin)
Construct by providing members.
Definition: eventDefinitions.hpp:428
std::vector< Alert > active_alerts
Definition: eventDefinitions.hpp:469
Abstract Event Type that is used as a base for computation events.
Definition: eventDefinitions.hpp:69
JsonPayload ToJson() const
Definition: eventDefinitions.hpp:84
std::string item
Definition: eventDefinitions.hpp:92
std::string state
Definition: eventDefinitions.hpp:93
ComputationEvent(std::string const &origin, std::string const &item)
Definition: eventDefinitions.hpp:76
ComputationEvent(std::string const &origin, std::string const &item, std::string const &state)
Definition: eventDefinitions.hpp:72
ComputationEvent(JsonPayload const &payload)
Definition: eventDefinitions.hpp:80
static const std::string TOPIC_NAME
Definition: eventDefinitions.hpp:70
Event Type used to signal that a computation has finished.
Definition: eventDefinitions.hpp:119
JsonPayload ToJson() const
Definition: eventDefinitions.hpp:134
ComputationFinishedEvent(std::string const &origin, std::string const &item)
Definition: eventDefinitions.hpp:120
JsonPayload result
Definition: eventDefinitions.hpp:141
ComputationFinishedEvent(JsonPayload const &payload)
Definition: eventDefinitions.hpp:130
ComputationFinishedEvent(std::string const &origin, std::string const &item, JsonPayload const &result)
Definition: eventDefinitions.hpp:124
Event Type used to signal that a computation has started.
Definition: eventDefinitions.hpp:100
ComputationStartedEvent(JsonPayload const &payload)
Definition: eventDefinitions.hpp:105
ComputationStartedEvent(std::string const &origin, std::string const &item)
Definition: eventDefinitions.hpp:101
JsonPayload ToJson() const
Definition: eventDefinitions.hpp:108
Abstract Event Type that is used as a base for configuration events.
Definition: eventDefinitions.hpp:150
ConfigurationEvent(JsonPayload const &payload)
Definition: eventDefinitions.hpp:163
ConfigurationEvent(std::string const &origin, std::string const &item, std::string const &state)
Definition: eventDefinitions.hpp:153
static const std::string TOPIC_NAME
Definition: eventDefinitions.hpp:151
std::string state
Definition: eventDefinitions.hpp:176
std::vector< std::string > items
Definition: eventDefinitions.hpp:175
ConfigurationEvent(std::string const &origin, std::vector< std::string > const &items, std::string const &state)
Definition: eventDefinitions.hpp:157
JsonPayload ToJson() const
Definition: eventDefinitions.hpp:167
Event Type used to signal that a configuration data item was retrieved from RTR.
Definition: eventDefinitions.hpp:206
ConfigurationRetrievedEvent(JsonPayload const &payload)
Definition: eventDefinitions.hpp:215
JsonPayload ToJson() const
Definition: eventDefinitions.hpp:218
ConfigurationRetrievedEvent(std::string const &origin, std::vector< std::string > const &items)
Definition: eventDefinitions.hpp:211
ConfigurationRetrievedEvent(std::string const &origin, std::string const &item)
Definition: eventDefinitions.hpp:207
Event Type used to signal that a configuration data item was updated in RTR.
Definition: eventDefinitions.hpp:183
ConfigurationUpdatedEvent(JsonPayload const &payload)
Definition: eventDefinitions.hpp:192
JsonPayload ToJson() const
Definition: eventDefinitions.hpp:195
ConfigurationUpdatedEvent(std::string const &origin, std::vector< std::string > const &items)
Definition: eventDefinitions.hpp:188
ConfigurationUpdatedEvent(std::string const &origin, std::string const &item)
Definition: eventDefinitions.hpp:184
Abstract Event Type that is used as a base for coordination events.
Definition: eventDefinitions.hpp:306
CoordinationEvent(std::string const &origin)
Definition: eventDefinitions.hpp:309
JsonPayload ToJson() const
Definition: eventDefinitions.hpp:315
static const std::string TOPIC_NAME
Definition: eventDefinitions.hpp:307
CoordinationEvent(JsonPayload const &payload)
Definition: eventDefinitions.hpp:312
Event Type used to signal that a configuration data item was applied in HRTC.
Definition: eventDefinitions.hpp:267
uint64_t hrtc_sample_id
Definition: eventDefinitions.hpp:297
HrtcConfigurationAppliedEvent(JsonPayload const &payload)
Definition: eventDefinitions.hpp:279
HrtcConfigurationAppliedEvent(std::string const &origin, std::string const &item, std::string const &hrtc_origin, uint64_t hrtc_timestamp, uint64_t hrtc_sample_id)
Definition: eventDefinitions.hpp:268
std::string hrtc_origin
Definition: eventDefinitions.hpp:295
uint64_t hrtc_timestamp
Definition: eventDefinitions.hpp:296
JsonPayload ToJson() const
Definition: eventDefinitions.hpp:286
Event Type used to signal that a configuration data item was scheduled to be applied in HRTC.
Definition: eventDefinitions.hpp:230
uint64_t hrtc_timestamp
Definition: eventDefinitions.hpp:259
uint64_t hrtc_sample_id
Definition: eventDefinitions.hpp:260
HrtcConfigurationScheduledEvent(std::string const &origin, std::string const &item, std::string const &hrtc_origin, uint64_t hrtc_timestamp, uint64_t hrtc_sample_id)
Definition: eventDefinitions.hpp:231
JsonPayload ToJson() const
Definition: eventDefinitions.hpp:249
std::string hrtc_origin
Definition: eventDefinitions.hpp:258
HrtcConfigurationScheduledEvent(JsonPayload const &payload)
Definition: eventDefinitions.hpp:242
Event Type used to signal that some entity in HRTC changed its state.
Definition: eventDefinitions.hpp:357
HrtcStateChangedEvent(std::string const &origin, std::string const &entity, std::string const &state, uint64_t hrtc_timestamp, uint64_t hrtc_sample_id)
Definition: eventDefinitions.hpp:358
HrtcStateChangedEvent(JsonPayload const &payload)
Definition: eventDefinitions.hpp:368
uint64_t hrtc_timestamp
Definition: eventDefinitions.hpp:382
JsonPayload ToJson() const
Definition: eventDefinitions.hpp:374
uint64_t hrtc_sample_id
Definition: eventDefinitions.hpp:383
Event Type used to signal that some entity changed its state.
Definition: eventDefinitions.hpp:326
StateChangedEvent(std::string const &origin, std::string const &state)
Definition: eventDefinitions.hpp:333
JsonPayload ToJson() const
Definition: eventDefinitions.hpp:341
std::string entity
Definition: eventDefinitions.hpp:349
StateChangedEvent(std::string const &origin, std::string const &entity, std::string const &state)
Definition: eventDefinitions.hpp:327
std::string state
Definition: eventDefinitions.hpp:350
StateChangedEvent(JsonPayload const &payload)
Definition: eventDefinitions.hpp:337