14#include <unordered_map>
18 class messaging_quic_server;
42 std::string_view session_id,
43 std::shared_ptr<session::quic_session> session);
46 [[nodiscard]]
auto id()
const -> std::string_view
override;
47 [[nodiscard]]
auto is_connected()
const ->
bool override;
48 [[nodiscard]]
auto send(std::vector<uint8_t>&& data) ->
VoidResult override;
49 auto close() ->
void override;
53 std::shared_ptr<session::quic_session>
session_;
160 [[nodiscard]]
auto is_running() const ->
bool override;
194 std::shared_ptr<core::messaging_quic_server>
server_;
208 std::unordered_map<std::string, std::shared_ptr<quic_session_wrapper>>
sessions_;
Unified interface for all protocol server implementations.
std::function< void(std::string_view)> disconnection_callback_t
Callback type for disconnections (session_id)
std::function< void(std::string_view, const std::vector< uint8_t > &)> receive_callback_t
Callback type for received data (session_id, data)
std::function< void(std::string_view, std::error_code)> error_callback_t
Callback type for errors (session_id, error)
std::function< void(std::shared_ptr< i_session >)> connection_callback_t
Callback type for new connections.
Interface for a single client session on the server side.
Adapter that wraps messaging_quic_server to implement i_protocol_server.
auto start(uint16_t port) -> VoidResult override
Starts the server and begins listening for connections.
std::unordered_map< std::string, std::shared_ptr< quic_session_wrapper > > sessions_
auto set_error_callback(error_callback_t callback) -> void override
Sets the callback for errors.
disconnection_callback_t disconnection_callback_
std::mutex callbacks_mutex_
std::mutex sessions_mutex_
~quic_server_adapter() override
Destructor ensures proper cleanup.
auto set_ca_cert_path(std::string_view path) -> void
Sets CA certificate path for client verification.
quic_server_adapter(quic_server_adapter &&)=delete
auto set_key_path(std::string_view path) -> void
Sets the server private key path.
std::shared_ptr< core::messaging_quic_server > server_
auto is_running() const -> bool override
Checks if the component is currently running.
quic_server_adapter & operator=(quic_server_adapter &&)=delete
quic_server_adapter & operator=(const quic_server_adapter &)=delete
auto wait_for_stop() -> void override
Blocks until the component has stopped.
auto remove_wrapper(const std::string &session_id) -> void
Removes a session wrapper.
uint64_t max_idle_timeout_ms_
auto set_disconnection_callback(disconnection_callback_t callback) -> void override
Sets the callback for disconnections.
error_callback_t error_callback_
auto set_require_client_cert(bool require) -> void
Sets whether to require client certificate (mutual TLS)
auto stop() -> VoidResult override
Stops the server and closes all connections.
auto setup_internal_callbacks() -> void
Sets up internal callbacks to bridge QUIC callbacks to i_protocol_server callbacks.
connection_callback_t connection_callback_
auto set_connection_callback(connection_callback_t callback) -> void override
Sets the callback for new connections.
receive_callback_t receive_callback_
auto set_alpn_protocols(const std::vector< std::string > &protocols) -> void
Sets the ALPN protocols for negotiation.
quic_server_adapter(const quic_server_adapter &)=delete
bool require_client_cert_
auto get_or_create_wrapper(std::shared_ptr< session::quic_session > session) -> std::shared_ptr< quic_session_wrapper >
Creates or retrieves a session wrapper for a QUIC session.
quic_server_adapter(std::string_view server_id)
Constructs an adapter with a unique server ID.
auto set_max_idle_timeout(uint64_t timeout_ms) -> void
Sets max idle timeout in milliseconds.
auto set_receive_callback(receive_callback_t callback) -> void override
Sets the callback for received data.
std::optional< std::string > ca_cert_path_
std::vector< std::string > alpn_protocols_
auto set_cert_path(std::string_view path) -> void
Sets the server certificate path.
std::atomic< bool > is_running_
auto connection_count() const -> size_t override
Gets the number of active client connections.
auto set_max_connections(size_t max) -> void
Sets maximum number of concurrent connections.
Wrapper for QUIC session to implement i_session interface.
auto is_connected() const -> bool override
Checks if the session is currently connected.
auto close() -> void override
Closes the session.
quic_session_wrapper(std::string_view session_id, std::shared_ptr< session::quic_session > session)
Constructs a session wrapper.
std::atomic< bool > is_connected_
std::shared_ptr< session::quic_session > session_
auto id() const -> std::string_view override
Gets the unique identifier for this session.
Protocol-specific server interface extending i_server.