Network System 0.1.1
High-performance modular networking library for scalable client-server applications
Loading...
Searching...
No Matches
http_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
12#pragma once
13
22#include <chrono>
23#include <cstdint>
24#include <memory>
25#include <string>
26
28
30{
33} // namespace kcenon::network::interfaces
34
36{
37
77{
78public:
84 {
86 std::string client_id;
87
89 std::chrono::milliseconds timeout = std::chrono::seconds(30);
90
92 bool use_ssl = false;
93
95 std::string path = "/";
96 };
97
103 {
105 uint16_t port = 0;
106
108 std::string server_id;
109 };
110
130 [[nodiscard]] auto create_client(const client_config& config) const
132
151 [[nodiscard]] auto create_server(const server_config& config) const
153
154private:
156 [[nodiscard]] static auto generate_client_id() -> std::string;
157
159 [[nodiscard]] static auto generate_server_id() -> std::string;
160
162 static auto validate_client_config(const client_config& config) -> VoidResult;
163
165 static auto validate_server_config(const server_config& config) -> VoidResult;
166};
167
168} // namespace kcenon::network::facade
Simplified facade for creating HTTP clients and servers.
Definition http_facade.h:77
static auto validate_server_config(const server_config &config) -> VoidResult
Validates server configuration.
static auto validate_client_config(const client_config &config) -> VoidResult
Validates client configuration.
auto create_server(const server_config &config) const -> Result< std::shared_ptr< interfaces::i_protocol_server > >
Creates an HTTP server with the specified configuration.
static auto generate_server_id() -> std::string
Generates a unique server ID.
auto create_client(const client_config &config) const -> Result< std::shared_ptr< interfaces::i_protocol_client > >
Creates an HTTP client with the specified configuration.
static auto generate_client_id() -> std::string
Generates a unique client ID.
Unified interface for all protocol client implementations.
Unified interface for all protocol server implementations.
Result< std::monostate > VoidResult
Public header for Result<T> error handling types.
Configuration for creating an HTTP client.
Definition http_facade.h:84
std::string client_id
Client identifier (auto-generated if not provided)
Definition http_facade.h:86
std::chrono::milliseconds timeout
Request timeout.
Definition http_facade.h:89
std::string path
HTTP path (default: "/")
Definition http_facade.h:95
Configuration for creating an HTTP server.
std::string server_id
Server identifier (optional, auto-generated if not provided)