21 std::atomic<uint64_t> g_client_id_counter{0};
24 std::atomic<uint64_t> g_server_id_counter{0};
29 const auto id = g_client_id_counter.fetch_add(1, std::memory_order_relaxed);
30 std::ostringstream oss;
31 oss <<
"udp_client_" << std::setfill(
'0') << std::setw(8) << id;
37 const auto id = g_server_id_counter.fetch_add(1, std::memory_order_relaxed);
38 std::ostringstream oss;
39 oss <<
"udp_server_" << std::setfill(
'0') << std::setw(8) << id;
47 return error_void(-1,
"udp_facade: host cannot be empty",
"udp_facade");
52 return error_void(-1,
"udp_facade: port must be between 1 and 65535",
"udp_facade");
62 return error_void(-1,
"udp_facade: port must be between 1 and 65535",
"udp_facade");
72 auto validation = validate_client_config(
config);
73 if (validation.is_err())
76 validation.error().code, validation.error().message,
"udp_facade");
80 const std::string client_id =
config.client_id.empty() ? generate_client_id() :
config.client_id;
83 auto client = std::make_shared<internal::adapters::udp_client_adapter>(client_id);
90 -600,
"udp_facade: failed to start client: " + result.error().
message,
"udp_facade");
93 return ok(std::shared_ptr<interfaces::i_protocol_client>(client));
100 auto validation = validate_server_config(
config);
101 if (validation.is_err())
104 validation.error().code, validation.error().message,
"udp_facade");
108 const std::string server_id =
config.server_id.empty() ? generate_server_id() :
config.server_id;
111 auto server = std::make_shared<internal::adapters::udp_server_adapter>(server_id);
114 auto result = server->start(
config.port);
118 -660,
"udp_facade: failed to start server: " + result.error().
message,
"udp_facade");
121 return ok(std::shared_ptr<interfaces::i_protocol_server>(server));
auto create_server(const server_config &config) const -> Result< std::shared_ptr< interfaces::i_protocol_server > >
Creates a UDP server with the specified configuration.
auto create_client(const client_config &config) const -> Result< std::shared_ptr< interfaces::i_protocol_client > >
Creates a UDP client with the specified configuration.
static auto validate_server_config(const server_config &config) -> VoidResult
Validates server configuration.
static auto generate_client_id() -> std::string
Generates a unique client ID.
static auto generate_server_id() -> std::string
Generates a unique server ID.
static auto validate_client_config(const client_config &config) -> VoidResult
Validates client configuration.
VoidResult error_void(int code, const std::string &message, const std::string &source="network_system", const std::string &details="")
Configuration for creating a UDP client.
Configuration for creating a UDP server.
Simplified facade for creating UDP clients and servers.