Network System 0.1.1
High-performance modular networking library for scalable client-server applications
Loading...
Searching...
No Matches
quic.h
Go to the documentation of this file.
1// BSD 3-Clause License
2// Copyright (c) 2025, 🍀☀🌕🌥 🌊
3// See the LICENSE file in the project root for full license information.
4
12#pragma once
13
25
26#include <chrono>
27#include <cstdint>
28#include <memory>
29#include <optional>
30#include <string>
31#include <string_view>
32
34
47 std::string server_name;
48
50 std::string cert_file;
51
53 std::string key_file;
54
56 std::vector<std::string> alpn_protocols;
57
59 std::chrono::milliseconds idle_timeout{0};
60
62 uint64_t max_bidi_streams{100};
63
65 uint64_t max_uni_streams{100};
66
68 uint64_t initial_max_data{10 * 1024 * 1024}; // 10 MB
69
71 uint64_t initial_max_stream_data_bidi{1024 * 1024}; // 1 MB
72
74 uint64_t initial_max_stream_data_uni{1024 * 1024}; // 1 MB
75
77 bool enable_early_data{false};
78
80 bool enable_pmtud{true};
81
84};
85
118[[nodiscard]] auto create_connection(const quic_config& config = {},
119 std::string_view id = "")
120 -> std::unique_ptr<unified::i_connection>;
121
144[[nodiscard]] auto connect(const unified::endpoint_info& endpoint,
145 const quic_config& config = {},
146 std::string_view id = "")
147 -> std::unique_ptr<unified::i_connection>;
148
158[[nodiscard]] auto connect(std::string_view url,
159 const quic_config& config = {},
160 std::string_view id = "")
161 -> std::unique_ptr<unified::i_connection>;
162
195[[nodiscard]] auto create_listener(const quic_config& config,
196 std::string_view id = "")
197 -> std::unique_ptr<unified::i_listener>;
198
222[[nodiscard]] auto listen(const unified::endpoint_info& bind_address,
223 const quic_config& config,
224 std::string_view id = "")
225 -> std::unique_ptr<unified::i_listener>;
226
236[[nodiscard]] auto listen(uint16_t port,
237 const quic_config& config,
238 std::string_view id = "")
239 -> std::unique_ptr<unified::i_listener>;
240
241} // namespace kcenon::network::protocol::quic
Core interface for active network connections.
Core interface for passive network listeners (server-side).
auto create_listener(const quic_config &config, std::string_view id="") -> std::unique_ptr< unified::i_listener >
Creates a QUIC listener (not yet listening)
Definition quic.cpp:122
auto connect(const unified::endpoint_info &endpoint, const quic_config &config={}, std::string_view id="") -> std::unique_ptr< unified::i_connection >
Creates and connects a QUIC connection in one call.
Definition quic.cpp:85
auto listen(const unified::endpoint_info &bind_address, const quic_config &config, std::string_view id="") -> std::unique_ptr< unified::i_listener >
Creates and starts a QUIC listener in one call.
Definition quic.cpp:133
auto create_connection(const quic_config &config={}, std::string_view id="") -> std::unique_ptr< unified::i_connection >
Creates a QUIC connection (not yet connected)
Definition quic.cpp:74
Configuration options for QUIC connections.
Definition quic.h:45
bool enable_early_data
Enable 0-RTT (early data)
Definition quic.h:77
std::string cert_file
Path to certificate file (required for server)
Definition quic.h:50
bool insecure_skip_verify
Disable certificate verification (for testing only)
Definition quic.h:83
uint64_t max_uni_streams
Maximum number of unidirectional streams.
Definition quic.h:65
std::string key_file
Path to private key file (required for server)
Definition quic.h:53
std::string server_name
Server name for TLS SNI (required for client connections)
Definition quic.h:47
uint64_t max_bidi_streams
Maximum number of bidirectional streams.
Definition quic.h:62
uint64_t initial_max_stream_data_uni
Initial maximum stream data for unidirectional streams.
Definition quic.h:74
bool enable_pmtud
Enable Path MTU Discovery.
Definition quic.h:80
std::vector< std::string > alpn_protocols
ALPN (Application-Layer Protocol Negotiation) protocols.
Definition quic.h:56
uint64_t initial_max_stream_data_bidi
Initial maximum stream data for bidirectional streams.
Definition quic.h:71
std::chrono::milliseconds idle_timeout
Maximum idle timeout (0 = use default)
Definition quic.h:59
uint64_t initial_max_data
Initial maximum data (connection-level flow control)
Definition quic.h:68
Network endpoint information (host/port or URL)
Definition types.h:56
Network endpoint types (host/port, URL) and common type aliases.