Network System 0.1.1
High-performance modular networking library for scalable client-server applications
Loading...
Searching...
No Matches
i_quic_server.h
Go to the documentation of this file.
1// BSD 3-Clause License
2// Copyright (c) 2024, 🍀☀🌕🌥 🌊
3// See the LICENSE file in the project root for full license information.
4
5#pragma once
6#ifndef KCENON_NETWORK_INTERNAL_INTERFACES_I_QUIC_SERVER_H_
7#define KCENON_NETWORK_INTERNAL_INTERFACES_I_QUIC_SERVER_H_
8
11
12#include <cstdint>
13#include <functional>
14#include <memory>
15#include <string_view>
16#include <system_error>
17#include <vector>
18
20
22{
23
32 {
33 public:
38 [[nodiscard]] virtual auto create_stream() -> Result<uint64_t> = 0;
39
44 [[nodiscard]] virtual auto create_unidirectional_stream() -> Result<uint64_t> = 0;
45
53 [[nodiscard]] virtual auto send_on_stream(
54 uint64_t stream_id,
55 std::vector<uint8_t>&& data,
56 bool fin = false) -> VoidResult = 0;
57
63 [[nodiscard]] virtual auto close_stream(uint64_t stream_id) -> VoidResult = 0;
64 };
65
85 {
86 public:
88 using connection_callback_t = std::function<void(std::shared_ptr<i_quic_session>)>;
89
91 using disconnection_callback_t = std::function<void(std::string_view)>;
92
94 using receive_callback_t = std::function<void(std::string_view, const std::vector<uint8_t>&)>;
95
97 using stream_callback_t = std::function<void(
98 std::string_view,
99 uint64_t,
100 const std::vector<uint8_t>&,
101 bool)>;
102
104 using error_callback_t = std::function<void(std::string_view, std::error_code)>;
105
118 [[nodiscard]] virtual auto start(uint16_t port) -> VoidResult = 0;
119
128 [[nodiscard]] virtual auto stop() -> VoidResult = 0;
129
134 [[nodiscard]] virtual auto connection_count() const -> size_t = 0;
135
140 virtual auto set_connection_callback(connection_callback_t callback) -> void = 0;
141
146 virtual auto set_disconnection_callback(disconnection_callback_t callback) -> void = 0;
147
152 virtual auto set_receive_callback(receive_callback_t callback) -> void = 0;
153
158 virtual auto set_stream_callback(stream_callback_t callback) -> void = 0;
159
164 virtual auto set_error_callback(error_callback_t callback) -> void = 0;
165 };
166
167} // namespace kcenon::network::interfaces
168
169#endif // KCENON_NETWORK_INTERNAL_INTERFACES_I_QUIC_SERVER_H_
Base interface for all network components.
Interface for QUIC server components.
std::function< void( std::string_view, uint64_t, const std::vector< uint8_t > &, bool)> stream_callback_t
Callback type for stream data (session_id, stream_id, data, is_fin)
virtual auto stop() -> VoidResult=0
Stops the QUIC server.
std::function< void(std::string_view, const std::vector< uint8_t > &)> receive_callback_t
Callback type for default stream data (session_id, data)
virtual auto set_connection_callback(connection_callback_t callback) -> void=0
Sets the callback for new connections.
virtual auto start(uint16_t port) -> VoidResult=0
Starts the QUIC server on the specified port.
virtual auto set_disconnection_callback(disconnection_callback_t callback) -> void=0
Sets the callback for disconnections.
virtual auto connection_count() const -> size_t=0
Gets the number of active QUIC connections.
virtual auto set_error_callback(error_callback_t callback) -> void=0
Sets the callback for errors.
std::function< void(std::string_view, std::error_code)> error_callback_t
Callback type for errors (session_id, error)
virtual auto set_stream_callback(stream_callback_t callback) -> void=0
Sets the callback for stream data.
std::function< void(std::shared_ptr< i_quic_session >)> connection_callback_t
Callback type for new connections.
virtual auto set_receive_callback(receive_callback_t callback) -> void=0
Sets the callback for received data on default stream.
std::function< void(std::string_view)> disconnection_callback_t
Callback type for disconnections (session_id)
Interface for a QUIC session on the server side.
virtual auto send_on_stream(uint64_t stream_id, std::vector< uint8_t > &&data, bool fin=false) -> VoidResult=0
Sends data on a specific stream.
virtual auto close_stream(uint64_t stream_id) -> VoidResult=0
Closes a stream.
virtual auto create_stream() -> Result< uint64_t >=0
Creates a new server-initiated bidirectional stream.
virtual auto create_unidirectional_stream() -> Result< uint64_t >=0
Creates a new server-initiated unidirectional stream.
Interface for a single client session on the server side.
Definition i_session.h:49
Base interface for all network components.
Session interface representing an active client-server connection.
Network-specific error and result type definitions.