Common System 0.2.0
Common interfaces and patterns for system integration
Loading...
Searching...
No Matches
kcenon::common::interfaces::IUdpClient Interface Referenceabstract

Abstract interface for UDP client implementations. More...

#include <udp_client_interface.h>

Inheritance diagram for kcenon::common::interfaces::IUdpClient:
Inheritance graph
Collaboration diagram for kcenon::common::interfaces::IUdpClient:
Collaboration graph

Public Member Functions

virtual ~IUdpClient ()=default
 
virtual::kcenon::common::VoidResult connect (const std::string &host, uint16_t port)=0
 Connect to a remote endpoint for optimized sending.
 
virtual::kcenon::common::VoidResult connect (const udp_endpoint &endpoint)
 Connect to a remote endpoint.
 
virtual::kcenon::common::VoidResult send (std::span< const uint8_t > data)=0
 Send data to the connected endpoint.
 
virtual::kcenon::common::VoidResult send (std::span< const uint8_t > data, const udp_send_options &options)
 Send data to the connected endpoint with options.
 
virtual::kcenon::common::VoidResult send_to (std::span< const uint8_t > data, const udp_endpoint &endpoint)=0
 Send data to a specific endpoint (connectionless)
 
virtual bool is_connected () const =0
 Check if the client is connected to an endpoint.
 
virtual std::optional< udp_endpointget_remote_endpoint () const
 Get the currently connected endpoint.
 
virtual void disconnect ()=0
 Disconnect from the current endpoint.
 
virtual udp_statistics get_statistics () const
 Get send statistics.
 
virtual void reset_statistics ()
 Reset statistics.
 
virtual std::string get_implementation_name () const
 Get the implementation name for logging/debugging.
 
::kcenon::common::VoidResult send (const std::string &data)
 Send string data to the connected endpoint.
 
::kcenon::common::VoidResult send_to (const std::string &data, const udp_endpoint &endpoint)
 Send string data to a specific endpoint.
 

Detailed Description

Abstract interface for UDP client implementations.

This interface defines the contract for UDP client implementations, allowing modules to send UDP datagrams without direct dependencies on specific networking libraries (e.g., ASIO, socket API, etc.).

Note
UDP is connectionless, but this interface provides optional "connected" mode for performance optimization when sending multiple datagrams to the same endpoint.
Implementations should be thread-safe for concurrent sends.

Example usage:

// Connect to a metrics server
auto result = client->connect("metrics.example.com", 8125);
if (result.is_ok()) {
// Send StatsD-formatted metric
std::string metric = "app.requests.count:1|c";
client->send(std::span<const uint8_t>(
reinterpret_cast<const uint8_t*>(metric.data()),
metric.size()));
}

Definition at line 136 of file udp_client_interface.h.

Constructor & Destructor Documentation

◆ ~IUdpClient()

virtual kcenon::common::interfaces::IUdpClient::~IUdpClient ( )
virtualdefault

Member Function Documentation

◆ connect() [1/2]

virtual::kcenon::common::VoidResult kcenon::common::interfaces::IUdpClient::connect ( const std::string & host,
uint16_t port )
pure virtual

Connect to a remote endpoint for optimized sending.

This establishes a "connected" UDP socket, which allows the kernel to cache routing information and perform error checking.

Parameters
hostRemote hostname or IP address
portRemote port number
Returns
VoidResult indicating success or error

Implemented in kcenon::common::interfaces::null_udp_client.

Referenced by connect().

Here is the caller graph for this function:

◆ connect() [2/2]

virtual::kcenon::common::VoidResult kcenon::common::interfaces::IUdpClient::connect ( const udp_endpoint & endpoint)
inline

Connect to a remote endpoint.

Parameters
endpointRemote endpoint
Returns
VoidResult indicating success or error

Definition at line 157 of file udp_client_interface.h.

157 {
158 return connect(endpoint.host, endpoint.port);
159 }
virtual::kcenon::common::VoidResult connect(const std::string &host, uint16_t port)=0
Connect to a remote endpoint for optimized sending.

References connect(), kcenon::common::interfaces::udp_endpoint::host, and kcenon::common::interfaces::udp_endpoint::port.

Here is the call graph for this function:

◆ disconnect()

virtual void kcenon::common::interfaces::IUdpClient::disconnect ( )
pure virtual

Disconnect from the current endpoint.

After disconnecting, send() will fail until connect() is called again. send_to() can still be used for connectionless sends.

Implemented in kcenon::common::interfaces::null_udp_client.

◆ get_implementation_name()

virtual std::string kcenon::common::interfaces::IUdpClient::get_implementation_name ( ) const
inlinenodiscardvirtual

Get the implementation name for logging/debugging.

Returns
Implementation identifier string

Implemented in kcenon::common::interfaces::null_udp_client.

Definition at line 236 of file udp_client_interface.h.

236 {
237 return "IUdpClient";
238 }

◆ get_remote_endpoint()

virtual std::optional< udp_endpoint > kcenon::common::interfaces::IUdpClient::get_remote_endpoint ( ) const
inlinenodiscardvirtual

Get the currently connected endpoint.

Returns
Optional containing endpoint if connected

Definition at line 207 of file udp_client_interface.h.

207 {
208 return std::nullopt;
209 }

◆ get_statistics()

virtual udp_statistics kcenon::common::interfaces::IUdpClient::get_statistics ( ) const
inlinenodiscardvirtual

Get send statistics.

Returns
Current statistics

Definition at line 223 of file udp_client_interface.h.

223 {
224 return {};
225 }

◆ is_connected()

virtual bool kcenon::common::interfaces::IUdpClient::is_connected ( ) const
nodiscardpure virtual

Check if the client is connected to an endpoint.

Returns
true if connected, false otherwise

Implemented in kcenon::common::interfaces::null_udp_client.

◆ reset_statistics()

virtual void kcenon::common::interfaces::IUdpClient::reset_statistics ( )
inlinevirtual

Reset statistics.

Definition at line 230 of file udp_client_interface.h.

230{}

◆ send() [1/3]

::kcenon::common::VoidResult kcenon::common::interfaces::IUdpClient::send ( const std::string & data)
inline

Send string data to the connected endpoint.

Parameters
dataString to send
Returns
VoidResult indicating success or error

Definition at line 247 of file udp_client_interface.h.

247 {
248 return send(std::span<const uint8_t>(
249 reinterpret_cast<const uint8_t*>(data.data()),
250 data.size()));
251 }
virtual::kcenon::common::VoidResult send(std::span< const uint8_t > data)=0
Send data to the connected endpoint.

References send().

Here is the call graph for this function:

◆ send() [2/3]

virtual::kcenon::common::VoidResult kcenon::common::interfaces::IUdpClient::send ( std::span< const uint8_t > data)
pure virtual

Send data to the connected endpoint.

Requires a prior successful call to connect().

Parameters
dataData to send
Returns
VoidResult indicating success or error

Implemented in kcenon::common::interfaces::null_udp_client.

Referenced by send(), and send().

Here is the caller graph for this function:

◆ send() [3/3]

virtual::kcenon::common::VoidResult kcenon::common::interfaces::IUdpClient::send ( std::span< const uint8_t > data,
const udp_send_options & options )
inline

Send data to the connected endpoint with options.

Parameters
dataData to send
optionsSend options
Returns
VoidResult indicating success or error

Definition at line 178 of file udp_client_interface.h.

179 {
180 // Default implementation ignores options
181 (void)options;
182 return send(data);
183 }

References send().

Here is the call graph for this function:

◆ send_to() [1/2]

::kcenon::common::VoidResult kcenon::common::interfaces::IUdpClient::send_to ( const std::string & data,
const udp_endpoint & endpoint )
inline

Send string data to a specific endpoint.

Parameters
dataString to send
endpointTarget endpoint
Returns
VoidResult indicating success or error

Definition at line 259 of file udp_client_interface.h.

259 {
260 return send_to(std::span<const uint8_t>(
261 reinterpret_cast<const uint8_t*>(data.data()),
262 data.size()), endpoint);
263 }
virtual::kcenon::common::VoidResult send_to(std::span< const uint8_t > data, const udp_endpoint &endpoint)=0
Send data to a specific endpoint (connectionless)

References send_to().

Here is the call graph for this function:

◆ send_to() [2/2]

virtual::kcenon::common::VoidResult kcenon::common::interfaces::IUdpClient::send_to ( std::span< const uint8_t > data,
const udp_endpoint & endpoint )
pure virtual

Send data to a specific endpoint (connectionless)

Sends data without requiring a prior connect() call.

Parameters
dataData to send
endpointTarget endpoint
Returns
VoidResult indicating success or error

Implemented in kcenon::common::interfaces::null_udp_client.

Referenced by send_to().

Here is the caller graph for this function:

The documentation for this interface was generated from the following file: