Nets v3.0.0
IStreamClient Class Referenceabstract

Stream client instance handle. (TCP). More...

#include <stream-client.hpp>

Public Member Functions

 IStreamClient (const IStreamClient &)=delete
 IStreamClient (IStreamClient &&r) noexcept
IStreamClient & operator= (IStreamClient &)=delete
IStreamClient & operator= (IStreamClient &&r) noexcept
 IStreamClient ()=default
 Creates a new empty stream client instance. (TCP).
 IStreamClient (size_t bufferSize=UINT16_MAX+1, double timeoutTime=5.0, SslContextView sslContext=nullptr)
 Creates a new stream client instance. (TCP).
void destroy () noexcept
 Destroys stream client instance.
virtual void onConnectionResult (NetsResult result)=0
 Stream client connection result function. (TCP).
virtual void onDisconnect (int reason)=0
 Stream client on server disconnect function. (TCP).
virtual int onStreamReceive (const uint8_t *receiveBuffer, size_t byteCount)=0
 Stream client data receive function. (TCP).
virtual int onDatagramReceive (const uint8_t *receiveBuffer, size_t byteCount)=0
 Stream client datagram receive function. (UDP).
virtual string reasonToString (int reason)
 Converts reason value to string.
StreamClient_TgetInstance () const noexcept
 Returns stream client handle instance.
size_t getBufferSize () const noexcept
 Returns stream client receive buffer size.
double getTimeoutTime () const noexcept
 Returns stream client server timeout time. (in seconds).
uint8_tgetBuffer () const noexcept
 Returns stream client socket locker.
SslContextView getSslContext () const noexcept
 Returns stream client socket SSL context instance.
void setSslContext (SslContextView sslContext=nullptr) noexcept
 Sets stream client socket SSL context instance.
bool isSecure () const noexcept
 Returns true if stream client use encrypted connection.
bool isRunning () const noexcept
 Returns true if stream client receive thread is running.
bool isConnected () const noexcept
 Returns true if stream client is connected to the server.
void connect (SocketAddressView remoteAddress, const char *hostname=nullptr)
 Initiates stream client connection to the server with specified IP address.
void connect (const char *hostname, const char *service, bool setSNI=true)
 Initiates stream client connection to the server with specified hostname.
void disconnect () noexcept
 Disconnects stream client from the server.
void update () noexcept
 Updates stream client state.
void alive () noexcept
 Resets stream client server timeout time.
NetsResult send (const void *data, size_t byteCount) noexcept
 Sends stream data to the server. (TCP).
NetsResult send (const OutStreamMessage &message) noexcept
 Sends stream message to the server. (TCP).
NetsResult sendDatagram (const void *data, size_t byteCount) noexcept
 Sends datagram to the server. (UDP).
NetsResult sendDatagram (const OutStreamMessage &message) noexcept
 Sends datagram message to the server. (UDP).

Protected Attributes

StreamClient_Tinstance = nullptr

Detailed Description

Stream client instance handle. (TCP).

See the stream-client.h

Constructor & Destructor Documentation

◆ IStreamClient()

IStreamClient ( size_t bufferSize = UINT16_MAX + 1,
double timeoutTime = 5.0,
SslContextView sslContext = nullptr )
inline

Creates a new stream client instance. (TCP).

See the createStreamClient().

Parameters
bufferSizereceive data buffer size in bytes
timeoutTimeserver timeout time in seconds
sslContextsocket SSL context instance or NULL
Exceptions
Errorwith a NetsResult string on failure.

Member Function Documentation

◆ destroy()

void destroy ( )
inlinenoexcept

Destroys stream client instance.

See the destroyStreamClient().

◆ onConnectionResult()

virtual void onConnectionResult ( NetsResult result)
pure virtual

Stream client connection result function. (TCP).

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

◆ onDisconnect()

virtual void onDisconnect ( int reason)
pure virtual

Stream client on server disconnect function. (TCP).

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

◆ onStreamReceive()

virtual int onStreamReceive ( const uint8_t * receiveBuffer,
size_t byteCount )
pure virtual

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
[in]receiveBufferreceived data buffer
byteCountreceived byte count

◆ onDatagramReceive()

virtual int onDatagramReceive ( const uint8_t * receiveBuffer,
size_t byteCount )
pure virtual

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
[in]receiveBufferreceived data buffer
byteCountreceived byte count

◆ reasonToString()

virtual string reasonToString ( int reason)
inlinevirtual

Converts reason value to string.

Parameters
reasontarget reason value

◆ getBufferSize()

size_t getBufferSize ( ) const
inlinenoexcept

Returns stream client receive buffer size.

See the getStreamClientBufferSize().

◆ getTimeoutTime()

double getTimeoutTime ( ) const
inlinenoexcept

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

See the getStreamClientTimeoutTime().

◆ getBuffer()

uint8_t * getBuffer ( ) const
inlinenoexcept

Returns stream client socket locker.

See the getStreamClientBuffer().

◆ getSslContext()

SslContextView getSslContext ( ) const
inlinenoexcept

Returns stream client socket SSL context instance.

See the getStreamClientSslContext().

◆ setSslContext()

void setSslContext ( SslContextView sslContext = nullptr)
inlinenoexcept

Sets stream client socket SSL context instance.

See the setStreamClientSslContext().

Parameters
sslContextsocket SSL context instance or NULL

◆ isSecure()

bool isSecure ( ) const
inlinenoexcept

Returns true if stream client use encrypted connection.

See the getStreamClientSslContext().

◆ isRunning()

bool isRunning ( ) const
inlinenoexcept

Returns true if stream client receive thread is running.

See the isStreamClientRunning().

◆ isConnected()

bool isConnected ( ) const
inlinenoexcept

Returns true if stream client is connected to the server.

See the isStreamClientConnected().

◆ connect() [1/2]

void connect ( SocketAddressView remoteAddress,
const char * hostname = nullptr )
inline

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

See the connectStreamClientByAddress().

Parameters
remoteAddressremote server IP address
[in]hostnameremote server hostname or NULL
Exceptions
Errorwith a NetsResult string on failure.

◆ connect() [2/2]

void connect ( const char * hostname,
const char * service,
bool setSNI = true )
inline

Initiates stream client connection to the server with specified hostname.

See the connectStreamClientByHostname().

Parameters
[in]hostnameserver hostname string
[in]serviceserver service string (port)
setSNIset SSL server SNI hostname
Exceptions
Errorwith a NetsResult string on failure.

◆ disconnect()

void disconnect ( )
inlinenoexcept

Disconnects stream client from the server.

See the disconnectStreamClient().

◆ update()

void update ( )
inlinenoexcept

Updates stream client state.

See the streamClientUpdate().

Parameters
[in]sendBufferdata send buffer
byteCountdata byte count to send

◆ alive()

void alive ( )
inlinenoexcept

Resets stream client server timeout time.

See the aliveStreamClient().

◆ send() [1/2]

NetsResult send ( const void * data,
size_t byteCount )
inlinenoexcept

Sends stream data to the server. (TCP).

See the streamClientSend().

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

◆ send() [2/2]

NetsResult send ( const OutStreamMessage & message)
inlinenoexcept

Sends stream message to the server. (TCP).

See the streamClientSend().

Returns
The operation NetsResult code.
Parameters
[in]messagestream message to send

◆ sendDatagram() [1/2]

NetsResult sendDatagram ( const void * data,
size_t byteCount )
inlinenoexcept

Sends datagram to the server. (UDP).

See the streamClientSendDatagram().

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

◆ sendDatagram() [2/2]

NetsResult sendDatagram ( const OutStreamMessage & message)
inlinenoexcept

Sends datagram message to the server. (UDP).

See the streamClientSendDatagram().

Returns
The operation NetsResult code.
Parameters
[in]messagedatagram message to send