20#ifndef ORES_COMMS_MESSAGING_SUBSCRIPTION_PROTOCOL_HPP
21#define ORES_COMMS_MESSAGING_SUBSCRIPTION_PROTOCOL_HPP
30#include "ores.comms/messaging/message_types.hpp"
31#include "ores.comms/messaging/message_traits.hpp"
32#include "ores.eventing/domain/event_channel_info.hpp"
62 static std::expected<subscribe_request, ores::utility::serialization::error_code>
88 static std::expected<subscribe_response, ores::utility::serialization::error_code>
110 std::vector<std::byte>
serialize()
const;
115 static std::expected<unsubscribe_request, ores::utility::serialization::error_code>
136 std::vector<std::byte>
serialize()
const;
141 static std::expected<unsubscribe_response, ores::utility::serialization::error_code>
187 std::vector<std::byte>
serialize()
const;
192 static std::expected<notification_message, ores::utility::serialization::error_code>
229 std::vector<std::byte>
serialize()
const;
234 static std::expected<database_status_message, ores::utility::serialization::error_code>
252 std::vector<std::byte>
serialize()
const;
257 static std::expected<list_event_channels_request, ores::utility::serialization::error_code>
270 std::vector<eventing::domain::event_channel_info>
channels;
283 std::vector<std::byte>
serialize()
const;
288 static std::expected<list_event_channels_response, ores::utility::serialization::error_code>
301 static constexpr message_type request_message_type =
302 message_type::subscribe_request;
312 static constexpr message_type request_message_type =
313 message_type::unsubscribe_request;
323 static constexpr message_type request_message_type =
324 message_type::list_event_channels_request;
Contains messaging related infrastructure in the comms library.
Definition assets_protocol.hpp:122
Traits template for mapping request types to their response types and message type enum values.
Definition message_traits.hpp:66
Request to subscribe to entity change notifications.
Definition subscription_protocol.hpp:42
static std::expected< subscribe_request, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize request from bytes.
Definition subscription_protocol.cpp:40
std::vector< std::byte > serialize() const
Serialize request to bytes.
Definition subscription_protocol.cpp:33
std::string event_type
The event type to subscribe to.
Definition subscription_protocol.hpp:48
Response confirming subscription request.
Definition subscription_protocol.hpp:71
std::vector< std::byte > serialize() const
Serialize response to bytes.
Definition subscription_protocol.cpp:56
static std::expected< subscribe_response, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize response from bytes.
Definition subscription_protocol.cpp:64
Request to unsubscribe from entity change notifications.
Definition subscription_protocol.hpp:97
std::vector< std::byte > serialize() const
Serialize request to bytes.
Definition subscription_protocol.cpp:85
std::string event_type
The event type to unsubscribe from.
Definition subscription_protocol.hpp:101
static std::expected< unsubscribe_request, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize request from bytes.
Definition subscription_protocol.cpp:92
Response confirming unsubscription request.
Definition subscription_protocol.hpp:124
static std::expected< unsubscribe_response, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize response from bytes.
Definition subscription_protocol.cpp:116
std::vector< std::byte > serialize() const
Serialize response to bytes.
Definition subscription_protocol.cpp:108
Server-initiated notification of an entity change.
Definition subscription_protocol.hpp:153
std::vector< std::byte > serialize() const
Serialize notification to bytes.
Definition subscription_protocol.cpp:137
std::string event_type
The event type that occurred.
Definition subscription_protocol.hpp:157
std::chrono::system_clock::time_point timestamp
Timestamp of when the change occurred (UTC).
Definition subscription_protocol.hpp:164
std::vector< std::string > entity_ids
Identifiers of entities that changed.
Definition subscription_protocol.hpp:173
static std::expected< notification_message, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize notification from bytes.
Definition subscription_protocol.cpp:156
Server-initiated notification of database status.
Definition subscription_protocol.hpp:204
static std::expected< database_status_message, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize notification from bytes.
Definition subscription_protocol.cpp:210
std::vector< std::byte > serialize() const
Serialize notification to bytes.
Definition subscription_protocol.cpp:196
std::chrono::system_clock::time_point timestamp
Timestamp of when the status was checked (UTC).
Definition subscription_protocol.hpp:218
bool available
Whether the database is available.
Definition subscription_protocol.hpp:208
std::string error_message
Error message if unavailable, empty otherwise.
Definition subscription_protocol.hpp:213
Request to list available event channels.
Definition subscription_protocol.hpp:246
static std::expected< list_event_channels_request, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize request from bytes.
Definition subscription_protocol.cpp:245
std::vector< std::byte > serialize() const
Serialize request to bytes.
Definition subscription_protocol.cpp:239
Response containing available event channels.
Definition subscription_protocol.hpp:266
std::vector< eventing::domain::event_channel_info > channels
List of available event channels.
Definition subscription_protocol.hpp:270
std::vector< std::byte > serialize() const
Serialize response to bytes.
Definition subscription_protocol.cpp:256
static std::expected< list_event_channels_response, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize response from bytes.
Definition subscription_protocol.cpp:272