ryu_ldn::network::ITcpClient
ryu_ldn::network::ITcpClient
Section titled “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
Methods
Section titled “Methods”~ITcpClient
Section titled “~ITcpClient”void ~ITcpClient()Virtual destructor.
initialize
Section titled “initialize”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
connect
Section titled “connect”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
disconnect
Section titled “disconnect”void disconnect()Disconnect from the server.
Safe to call even if not connected.
is_connected
Section titled “is_connected”bool is_connected()Check if the TCP connection is established.
true if connectedreturn
Returns: bool
send_packet
Section titled “send_packet”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
send_raw
Section titled “send_raw”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
send_initialize
Section titled “send_initialize”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
send_passphrase
Section titled “send_passphrase”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
send_passphrase
Section titled “send_passphrase”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
send_ping
Section titled “send_ping”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
send_disconnect
Section titled “send_disconnect”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
send_create_access_point
Section titled “send_create_access_point”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
send_create_access_point_private
Section titled “send_create_access_point_private”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
send_connect
Section titled “send_connect”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
send_connect_private
Section titled “send_connect_private”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
send_scan
Section titled “send_scan”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
send_proxy_data
Section titled “send_proxy_data”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
send_set_accept_policy
Section titled “send_set_accept_policy”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
send_set_advertise_data
Section titled “send_set_advertise_data”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
send_reject
Section titled “send_reject”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
receive_packet
Section titled “receive_packet”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
has_packet_available
Section titled “has_packet_available”bool has_packet_available()Check if a complete packet is buffered and available.
true if at least one complete packet is availablereturn
Returns: bool
set_nodelay
Section titled “set_nodelay”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