Skip to content

ryu_ldn::network::ITcpClient

Abstract interface foroperations.

Defines the full contract thatdepends on for TCP communication. The concreteimplements this interface for production use; test code substitutes a MockTcpClient.Dependency Injectionaccepts anvia constructor injection. In production, ais created automatically. In tests, a MockTcpClient is injected to control return values and verify call counts without real sockets.for the production implementationseeMockTcpClient for the test doubleseeclassryu__ldn_1_1network_1_1ITcpClient_1

void ~ITcpClient()

Virtual destructor.

bool initialize()

Initialize the underlying socket subsystem.

Called once before the firstattempt. For, this calls. For MockTcpClient, this is a no-op unless configured to fail.true if initialization succeededreturnfalse if initialization failedreturn

Returns: bool

ClientResult connect(const char * host, uint16_t port, uint32_t timeout_ms)

Connect to a remote server.

hostServer hostname or IP addressportServer port numbertimeout_msConnection timeout in millisecondsparamClientResult indicating success or failurereturn

Parameters:

  • host (const char *)
  • port (uint16_t)
  • timeout_ms (uint32_t)

Returns: ClientResult

void disconnect()

Disconnect from the server.

Safe to call even if not connected.

bool is_connected()

Check if the TCP connection is established.

true if connectedreturn

Returns: bool

ClientResult send_packet(protocol::PacketId type, const void * payload, size_t payload_size)

Send a raw protocol packet with header encoding.

typePacket type identifierpayloadPacket payload datapayload_sizeSize of payload in bytesparamClientResult indicating success or failurereturn

Parameters:

  • type (protocol::PacketId)
  • payload (const void *)
  • payload_size (size_t)

Returns: ClientResult

ClientResult send_raw(const void * data, size_t size)

Send pre-encoded data (used by P2P components)

dataEncoded packet datasizeSize of data in bytesparamClientResult indicating success or failurereturn

Parameters:

  • data (const void *)
  • size (size_t)

Returns: ClientResult

ClientResult send_initialize(const protocol::InitializeMessage & msg)

Send Initialize handshake message.

msgInitialize message with session ID and MACparamClientResult indicating success or failurereturn

Parameters:

  • msg (const protocol::InitializeMessage &)

Returns: ClientResult

ClientResult send_passphrase(const protocol::PassphraseMessage & msg)

Send Passphrase message (struct overload)

msgPassphrase message with room passwordparamClientResult indicating success or failurereturn

Parameters:

  • msg (const protocol::PassphraseMessage &)

Returns: ClientResult

ClientResult send_passphrase(const char * passphrase)

Send Passphrase message (string overload)

passphraseNull-terminated passphrase stringparamClientResult indicating success or failurereturn

Parameters:

  • passphrase (const char *)

Returns: ClientResult

ClientResult send_ping(const protocol::PingMessage & msg)

Send Ping keepalive message.

msgPing message with requester and IDparamClientResult indicating success or failurereturn

Parameters:

  • msg (const protocol::PingMessage &)

Returns: ClientResult

ClientResult send_disconnect(const protocol::DisconnectMessage & msg)

Send Disconnect notification to server.

msgDisconnect message with reason codeparamClientResult indicating success or failurereturn

Parameters:

  • msg (const protocol::DisconnectMessage &)

Returns: ClientResult

ClientResult send_create_access_point(const protocol::CreateAccessPointRequest & request, const uint8_t * advertise_data, size_t advertise_size)

Send CreateAccessPoint request (host mode)

requestAccess point configurationadvertise_dataOptional advertise data bufferadvertise_sizeSize of advertise dataparamClientResult indicating success or failurereturn

Parameters:

  • request (const protocol::CreateAccessPointRequest &)
  • advertise_data (const uint8_t *)
  • advertise_size (size_t)

Returns: ClientResult

ClientResult send_create_access_point_private(const protocol::CreateAccessPointPrivateRequest & request, const uint8_t * advertise_data, size_t advertise_size)

Send CreateAccessPointPrivate request (private host mode)

requestPrivate access point configurationadvertise_dataOptional advertise data bufferadvertise_sizeSize of advertise dataparamClientResult indicating success or failurereturn

Parameters:

  • request (const protocol::CreateAccessPointPrivateRequest &)
  • advertise_data (const uint8_t *)
  • advertise_size (size_t)

Returns: ClientResult

ClientResult send_connect(const protocol::ConnectRequest & request)

Send Connect request (join a network)

requestConnection request with target network infoparamClientResult indicating success or failurereturn

Parameters:

  • request (const protocol::ConnectRequest &)

Returns: ClientResult

ClientResult send_connect_private(const protocol::ConnectPrivateRequest & request)

Send ConnectPrivate request (join a private network)

requestPrivate connection requestparamClientResult indicating success or failurereturn

Parameters:

  • request (const protocol::ConnectPrivateRequest &)

Returns: ClientResult

ClientResult send_scan(const protocol::ScanFilterFull & filter)

Send Scan request (find available networks)

filterScan filter criteriaparamClientResult indicating success or failurereturn

Parameters:

  • filter (const protocol::ScanFilterFull &)

Returns: ClientResult

ClientResult send_proxy_data(const protocol::ProxyDataHeader & header, const uint8_t * data, size_t data_size)

Send proxy data (game traffic relay)

headerProxy header with source/destination nodesdataGame data to senddata_sizeSize of game dataparamClientResult indicating success or failurereturn

Parameters:

  • header (const protocol::ProxyDataHeader &)
  • data (const uint8_t *)
  • data_size (size_t)

Returns: ClientResult

ClientResult send_set_accept_policy(const protocol::SetAcceptPolicyRequest & request)

Send SetAcceptPolicy request (host-only)

requestAccept policy requestparamClientResult indicating success or failurereturn

Parameters:

  • request (const protocol::SetAcceptPolicyRequest &)

Returns: ClientResult

ClientResult send_set_advertise_data(const uint8_t * data, size_t size)

Send SetAdvertiseData request (host-only)

dataAdvertise data buffersizeSize of advertise dataparamClientResult indicating success or failurereturn

Parameters:

  • data (const uint8_t *)
  • size (size_t)

Returns: ClientResult

ClientResult send_reject(const protocol::RejectRequest & request)

Send Reject request (host-only, kick a player)

requestReject request with node ID and reasonparamClientResult indicating success or failurereturn

Parameters:

  • request (const protocol::RejectRequest &)

Returns: ClientResult

ClientResult receive_packet(& type, void * payload, size_t payload_buffer_size, size_t & payload_size, int32_t timeout_ms)

Receive the next complete protocol packet.

Handles TCP stream reassembly internally.typePacket type of received packetpayloadBuffer to receive payload datapayload_buffer_sizeSize of payload bufferpayload_sizeActual size of received payloadtimeout_msReceive timeout in milliseconds (-1 = blocking)paramClientResult indicating success or failurereturn

Parameters:

  • type (&)
  • payload (void *)
  • payload_buffer_size (size_t)
  • payload_size (size_t &)
  • timeout_ms (int32_t)

Returns: ClientResult

bool has_packet_available()

Check if a complete packet is buffered and available.

true if at least one complete packet is availablereturn

Returns: bool

ClientResult set_nodelay(bool enable)

Enable or disable TCP_NODELAY.

enabletrue to disable Nagle’s algorithmparamClientResult indicating success or failurereturn

Parameters:

  • enable (bool)

Returns: ClientResult