20#ifndef ORES_COMMS_MESSAGING_MESSAGE_DISPATCHER_HPP
21#define ORES_COMMS_MESSAGING_MESSAGE_DISPATCHER_HPP
26#include <boost/asio/awaitable.hpp>
27#include "ores.utility/log/make_logger.hpp"
28#include "ores.comms/messaging/frame.hpp"
29#include "ores.comms/messaging/message_handler.hpp"
30#include "ores.comms/service/auth_session_service.hpp"
47 inline static std::string_view logger_name =
48 "ores.comms.messaging.message_dispatcher";
52 static auto instance = make_logger(logger_name);
74 std::shared_ptr<message_handler> handler);
91 boost::asio::awaitable<std::expected<frame, error_code>>
93 const std::string& remote_address,
110 message_type get_response_type(message_type request_type)
const;
112 std::shared_ptr<service::auth_session_service> sessions_;
113 std::map<message_type_range, std::shared_ptr<message_handler>> handlers_;
Contains messaging related infrastructure in the comms library.
Definition compression.hpp:29
compression_type
Compression algorithm used for payload compression.
Definition message_types.hpp:104
Implements logging for ORE Studio.
Definition lifecycle_manager.hpp:30
Complete frame with header and payload.
Definition frame.hpp:77
Dispatches incoming messages to registered subsystem handlers.
Definition message_dispatcher.hpp:45
boost::asio::awaitable< std::expected< frame, error_code > > dispatch(const frame &request_frame, std::uint32_t sequence, const std::string &remote_address, compression_type response_compression=compression_type::none)
Dispatch a request frame to the appropriate handler.
Definition message_dispatcher.cpp:38
void register_handler(message_type_range range, std::shared_ptr< message_handler > handler)
Register a handler for a range of message types.
Definition message_dispatcher.cpp:30
Range of message types handled by a subsystem.
Definition message_handler.hpp:37
Abstract interface for handling messages from a subsystem.
Definition message_handler.hpp:66