Network System 0.1.1
High-performance modular networking library for scalable client-server applications
Loading...
Searching...
No Matches
tcp_facade.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
11#pragma once
12
21#include <chrono>
22#include <cstdint>
23#include <memory>
24#include <optional>
25#include <string>
26
30
31// Forward declarations
33{
34class connection_pool;
35} // namespace kcenon::network::core
36
38{
39
95{
96public:
102 {
104 std::string host;
105
107 uint16_t port = 0;
108
110 std::string client_id;
111
113 std::chrono::milliseconds timeout = std::chrono::seconds(30);
114
116 bool use_ssl = false;
117
119 std::optional<std::string> ca_cert_path;
120
123 };
124
130 {
132 uint16_t port = 0;
133
135 std::string server_id;
136
138 bool use_ssl = false;
139
141 std::optional<std::string> cert_path;
142
144 std::optional<std::string> key_path;
145
147 std::optional<std::string> tls_version;
148 };
149
167 [[nodiscard]] auto create_client(const client_config& config) const
169
187 [[nodiscard]] auto create_server(const server_config& config) const
189
195 {
197 std::string host;
198
200 uint16_t port = 0;
201
203 size_t pool_size = 10;
204
207 std::chrono::seconds acquire_timeout = std::chrono::seconds(30);
208 };
209
236 [[nodiscard]] auto create_connection_pool(const pool_config& config) const
238
239private:
241 [[nodiscard]] static auto generate_client_id() -> std::string;
242
244 [[nodiscard]] static auto generate_server_id() -> std::string;
245
247 static auto validate_client_config(const client_config& config) -> VoidResult;
248
250 static auto validate_server_config(const server_config& config) -> VoidResult;
251};
252
253} // namespace kcenon::network::facade
Manages a pool of reusable client connections to reduce connection overhead and improve performance.
Definition core.cppm:331
Simplified facade for creating TCP clients and servers.
Definition tcp_facade.h:95
static auto validate_server_config(const server_config &config) -> VoidResult
Validates server configuration.
auto create_server(const server_config &config) const -> Result< std::shared_ptr< interfaces::i_protocol_server > >
Creates a TCP server with the specified configuration.
auto create_connection_pool(const pool_config &config) const -> Result< std::shared_ptr< core::connection_pool > >
Creates a TCP connection pool with the specified configuration.
auto create_client(const client_config &config) const -> Result< std::shared_ptr< interfaces::i_protocol_client > >
Creates a TCP client with the specified configuration.
static auto generate_server_id() -> std::string
Generates a unique server ID.
static auto generate_client_id() -> std::string
Generates a unique client ID.
static auto validate_client_config(const client_config &config) -> VoidResult
Validates client configuration.
Protocol-specific client interface extending i_client.
Protocol-specific server interface extending i_server.
Result< std::monostate > VoidResult
Public header for Result<T> error handling types.
Configuration for creating a TCP client.
Definition tcp_facade.h:102
std::chrono::milliseconds timeout
Connection timeout.
Definition tcp_facade.h:113
bool verify_certificate
Whether to verify SSL certificate (default: true)
Definition tcp_facade.h:122
std::string client_id
Client identifier (optional, auto-generated if not provided)
Definition tcp_facade.h:110
std::string host
Server hostname or IP address.
Definition tcp_facade.h:104
std::optional< std::string > ca_cert_path
Path to CA certificate file (for SSL verification)
Definition tcp_facade.h:119
Configuration for creating a TCP connection pool.
Definition tcp_facade.h:195
std::chrono::seconds acquire_timeout
Maximum time to wait when acquiring a connection (default: 30s). Use std::chrono::seconds::zero() for...
Definition tcp_facade.h:207
size_t pool_size
Number of connections to maintain in the pool.
Definition tcp_facade.h:203
std::string host
Server hostname or IP address.
Definition tcp_facade.h:197
Configuration for creating a TCP server.
Definition tcp_facade.h:130
std::optional< std::string > cert_path
Path to server certificate file (required if use_ssl=true)
Definition tcp_facade.h:141
std::optional< std::string > tls_version
SSL/TLS protocol version (default: TLS 1.2+)
Definition tcp_facade.h:147
std::string server_id
Server identifier (optional, auto-generated if not provided)
Definition tcp_facade.h:135
std::optional< std::string > key_path
Path to server private key file (required if use_ssl=true)
Definition tcp_facade.h:144
uint16_t port
Port number to listen on.
Definition tcp_facade.h:132