53class server final :
public std::enable_shared_from_this<server> {
55 inline static std::string_view logger_name =
56 "ores.comms.net.server";
60 static auto instance = make_logger(logger_name);
72 std::shared_ptr<service::subscription_manager> subscription_mgr =
nullptr);
80 std::shared_ptr<messaging::message_handler> handler);
88 [[nodiscard]] std::shared_ptr<service::auth_session_service>
sessions()
const {
100 boost::asio::awaitable<void>
run(boost::asio::io_context& io_context,
101 std::function<
void(std::uint16_t)> on_listening =
nullptr);
125 boost::asio::awaitable<void> accept_loop(boost::asio::io_context& io_context,
126 std::function<
void(std::uint16_t)> on_listening);
131 void setup_ssl_context();
136 boost::asio::awaitable<void> watch_for_stop_signals(boost::asio::io_context& io_context);
139 ssl::context ssl_ctx_;
140 std::shared_ptr<service::auth_session_service> sessions_;
141 std::shared_ptr<messaging::message_dispatcher> dispatcher_;
142 std::shared_ptr<service::subscription_manager> subscription_mgr_;
143 std::atomic<std::size_t> active_connections_{0};
144 boost::asio::cancellation_signal stop_signal_;
145 std::list<std::shared_ptr<server_session>> active_sessions_;
146 std::mutex sessions_mutex_;