Nets v3.0.0
stream-client.h File Reference

Network stream client functions. (TCP). More...

#include "nets/socket.h"

Typedefs

typedef struct StreamClient_T StreamClient_T
typedef StreamClient_TStreamClient
typedef void(* OnStreamClientConnection) (StreamClient streamClient, NetsResult result)
 Stream client connection result function. (TCP).
typedef void(* OnStreamClientDisconnect) (StreamClient streamClient, int reason)
 Stream client on server disconnect function. (TCP).
typedef int(* OnStreamClientReceive) (StreamClient streamClient, const uint8_t *receiveBuffer, size_t byteCount)
 Stream client data receive function. (TCP).
typedef int(* OnStreamClientDatagram) (StreamClient streamClient, const uint8_t *receiveBuffer, size_t byteCount)
 Stream client datagram receive function. (UDP).

Functions

NetsResult createStreamClient (size_t bufferSize, double timeoutTime, OnStreamClientConnection onConnection, OnStreamClientDisconnect onDisconnect, OnStreamClientReceive onReceive, OnStreamClientDatagram onDatagram, void *handle, SslContext sslContext, StreamClient *streamClient)
 Creates a new stream client instance. (TCP).
void destroyStreamClient (StreamClient streamClient)
 Destroys stream client instance. (TCP).
size_t getStreamClientBufferSize (StreamClient streamClient)
 Returns stream client receive buffer size in bytes.
double getStreamClientTimeoutTime (StreamClient streamClient)
 Returns stream client server timeout time. (in seconds).
OnStreamClientConnection getStreamClientOnConnection (StreamClient streamClient)
 Returns stream client connection result function.
OnStreamClientReceive getStreamClientOnReceive (StreamClient streamClient)
 Returns stream client data receive function.
OnStreamClientDatagram getStreamClientOnDatagram (StreamClient streamClient)
 Returns stream client datagram receive function.
void * getStreamClientHandle (StreamClient streamClient)
 Returns stream client handle.
uint8_t * getStreamClientBuffer (StreamClient streamClient)
 Returns stream client data buffer.
SslContext getStreamClientSslContext (StreamClient streamClient)
 Returns stream client socket SSL context instance.
void setStreamClientSslContext (StreamClient streamClient, SslContext sslContext)
 Sets stream client socket SSL context instance.
bool isStreamClientSecure (StreamClient streamClient)
 Returns true if stream client use encrypted connection.
bool isStreamClientRunning (StreamClient streamClient)
 Returns true if stream client receive thread is running. (MT-Safe).
bool isStreamClientConnected (StreamClient streamClient)
 Returns true if stream client is connected to the server. (MT-Safe).
NetsResult connectStreamClientByAddress (StreamClient streamClient, SocketAddress remoteAddress, const char *hostname)
 Initiates stream client connection to the server with specified IP address.
NetsResult connectStreamClientByHostname (StreamClient streamClient, const char *hostname, const char *service, bool setSNI)
 Initiates stream client connection to the server with specified hostname and service.
void disconnectStreamClient (StreamClient streamClient)
 Disconnects stream client from the server.
void updateStreamClient (StreamClient streamClient)
 Updates stream client state.
void aliveStreamClient (StreamClient streamClient)
 Resets stream client server timeout time.
NetsResult streamClientSend (StreamClient streamClient, const void *data, size_t byteCount)
 Sends stream data to the server. (TCP).
NetsResult streamClientSendDatagram (StreamClient streamClient, const void *data, size_t byteCount)
 Sends datagram to the server. (UDP).

Detailed Description

Network stream client functions. (TCP).

Typedef Documentation

◆ StreamClient_T

Stream client structure. (TCP)

◆ StreamClient

Stream client instance. (TCP)

◆ OnStreamClientConnection

typedef void(* OnStreamClientConnection) (StreamClient streamClient, NetsResult result)

Stream client connection result function. (TCP).

Warning
This function is called asynchronously from the receive thread!
Parameters
streamClientstream client instance
resultconnection to the server result

◆ OnStreamClientDisconnect

typedef void(* OnStreamClientDisconnect) (StreamClient streamClient, int reason)

Stream client on server disconnect function. (TCP).

Warning
This function is called asynchronously from the receive thread!
Parameters
streamClientstream client instance
reasonserver disconnection reason

◆ OnStreamClientReceive

typedef int(* OnStreamClientReceive) (StreamClient streamClient, const uint8_t *receiveBuffer, size_t byteCount)

Stream client data receive function. (TCP).

Client stops receive thread on this function non zero return result.

Warning
This function is called asynchronously from the receive thread!
Parameters
streamClientstream client instance
[in]receiveBufferreceived data buffer
byteCountreceived byte count

◆ OnStreamClientDatagram

typedef int(* OnStreamClientDatagram) (StreamClient streamClient, const uint8_t *receiveBuffer, size_t byteCount)

Stream client datagram receive function. (UDP).

Client stops receive thread on this function non zero return result.

Warning
This function is called asynchronously from the receive thread!
Parameters
streamClientstream client instance
[in]receiveBufferreceived data buffer
byteCountreceived byte count

Function Documentation

◆ createStreamClient()

NetsResult createStreamClient ( size_t bufferSize,
double timeoutTime,
OnStreamClientConnection onConnection,
OnStreamClientDisconnect onDisconnect,
OnStreamClientReceive onReceive,
OnStreamClientDatagram onDatagram,
void * handle,
SslContext sslContext,
StreamClient * streamClient )

Creates a new stream client instance. (TCP).

Returns
The operation NetsResult code.
Parameters
bufferSizereceive data buffer size in bytes
timeoutTimeserver timeout time in seconds
[in]onConnectionon connection result function
[in]onDisconnecton server disconnect function
[in]onReceiveon data receive function
[in]onDatagramon datagrtam receive function or NULL
[in]handlereceive function argument or NULL
sslContextsocket SSL context instance or NULL
[out]streamClientpointer to the stream client instance

◆ destroyStreamClient()

void destroyStreamClient ( StreamClient streamClient)

Destroys stream client instance. (TCP).

Parameters
streamClienttarget stream client instance or NULL

◆ getStreamClientBufferSize()

size_t getStreamClientBufferSize ( StreamClient streamClient)

Returns stream client receive buffer size in bytes.

Parameters
streamClienttarget stream client instance

◆ getStreamClientTimeoutTime()

double getStreamClientTimeoutTime ( StreamClient streamClient)

Returns stream client server timeout time. (in seconds).

Parameters
streamClienttarget stream client instance

◆ getStreamClientOnConnection()

OnStreamClientConnection getStreamClientOnConnection ( StreamClient streamClient)

Returns stream client connection result function.

Parameters
streamClienttarget stream client instance

◆ getStreamClientOnReceive()

OnStreamClientReceive getStreamClientOnReceive ( StreamClient streamClient)

Returns stream client data receive function.

Parameters
streamClienttarget stream client instance

◆ getStreamClientOnDatagram()

OnStreamClientDatagram getStreamClientOnDatagram ( StreamClient streamClient)

Returns stream client datagram receive function.

Parameters
streamClienttarget stream client instance

◆ getStreamClientHandle()

void * getStreamClientHandle ( StreamClient streamClient)

Returns stream client handle.

Parameters
streamClienttarget stream client instance

◆ getStreamClientBuffer()

uint8_t * getStreamClientBuffer ( StreamClient streamClient)

Returns stream client data buffer.

Parameters
streamClienttarget stream client instance

◆ getStreamClientSslContext()

SslContext getStreamClientSslContext ( StreamClient streamClient)

Returns stream client socket SSL context instance.

Parameters
streamClienttarget stream client instance

◆ setStreamClientSslContext()

void setStreamClientSslContext ( StreamClient streamClient,
SslContext sslContext )

Sets stream client socket SSL context instance.

Parameters
streamClienttarget stream client instance
sslContextsocket SSL context instance or NULL

◆ isStreamClientSecure()

bool isStreamClientSecure ( StreamClient streamClient)

Returns true if stream client use encrypted connection.

Parameters
streamClienttarget stream client instance

◆ isStreamClientRunning()

bool isStreamClientRunning ( StreamClient streamClient)

Returns true if stream client receive thread is running. (MT-Safe).

Parameters
streamClienttarget stream client instance

◆ isStreamClientConnected()

bool isStreamClientConnected ( StreamClient streamClient)

Returns true if stream client is connected to the server. (MT-Safe).

Parameters
streamClienttarget stream client instance

◆ connectStreamClientByAddress()

NetsResult connectStreamClientByAddress ( StreamClient streamClient,
SocketAddress remoteAddress,
const char * hostname )

Initiates stream client connection to the server with specified IP address.

Returns
The operation NetsResult code.
Parameters
streamClienttarget stream client instance
remoteAddressremote server IP address
[in]hostnameremote server hostname or NULL

◆ connectStreamClientByHostname()

NetsResult connectStreamClientByHostname ( StreamClient streamClient,
const char * hostname,
const char * service,
bool setSNI )

Initiates stream client connection to the server with specified hostname and service.

Returns
The operation NetsResult code.
Parameters
streamClienttarget stream client instance
[in]hostnameserver hostname string
[in]serviceserver service string (port)
setSNIset SSL server SNI hostname

◆ disconnectStreamClient()

void disconnectStreamClient ( StreamClient streamClient)

Disconnects stream client from the server.

Parameters
streamClienttarget stream client instance

◆ updateStreamClient()

void updateStreamClient ( StreamClient streamClient)

Updates stream client state.

Parameters
streamClienttarget stream client instance

◆ aliveStreamClient()

void aliveStreamClient ( StreamClient streamClient)

Resets stream client server timeout time.

Parameters
streamClienttarget stream client instance

◆ streamClientSend()

NetsResult streamClientSend ( StreamClient streamClient,
const void * data,
size_t byteCount )

Sends stream data to the server. (TCP).

Internally synchronized. (MT-Safe)

Returns
The operation NetsResult code.
Parameters
streamClienttarget stream client instance
[in]datadata send buffer
byteCountdata byte count to send

◆ streamClientSendDatagram()

NetsResult streamClientSendDatagram ( StreamClient streamClient,
const void * data,
size_t byteCount )

Sends datagram to the server. (UDP).

Internally synchronized. (MT-Safe)

Returns
The operation NetsResult code.
Parameters
streamClienttarget stream client instance
[in]datasend data buffer
byteCountdata byte count to send