Nets v3.0.0
IStreamServer Class Referenceabstract

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

#include <stream-server.hpp>

Public Member Functions

 IStreamServer (const IStreamServer &)=delete
 IStreamServer (IStreamServer &&r) noexcept
IStreamServer & operator= (IStreamServer &)=delete
IStreamServer & operator= (IStreamServer &&r) noexcept
 IStreamServer (SocketFamily socketFamily, const char *service, size_t sessionBufferSize=512, size_t connectionQueueSize=256, size_t receiveBufferSize=UINT16_MAX+1, double timeoutTime=5.0, SslContextView sslContext=nullptr)
 Creates a new stream server instance. (TCP).
void destroy () noexcept
 Destroys stream server instance.
virtual void * onSessionCreate (StreamSessionView streamSession)=0
 Stream session create function. (TCP).
virtual void onSessionDestroy (StreamSessionView streamSession, int reason)=0
 Stream session destroy function. (TCP).
virtual int onStreamReceive (StreamSessionView streamSession, const uint8_t *receiveBuffer, size_t byteCount)=0
 Stream session data receive function. (TCP).
virtual void onDatagramReceive (SocketAddressView remoteAddress, const uint8_t *receiveBuffer, size_t byteCount)=0
 Stream server datagram receive function. (UDP).
virtual string reasonToString (int reason)
 Converts reason value to string.
StreamServer_TgetInstance () const noexcept
 Returns stream server handle instance.
size_t getSessionBufferSize () const noexcept
 Returns stream server session buffer size.
size_t getReceiveBufferSize () const noexcept
 Returns stream server receive buffer size in bytes.
double getTimeoutTime () const noexcept
 Returns stream server session timeout time. (in seconds).
uint8_tgetReceiveBuffer () const noexcept
 Returns stream server receive data buffer.
SocketView getSocket () const noexcept
 Returns stream server socket instance.
bool isRunning () const noexcept
 Returns true if stream server receive thread is running. (MT-Safe).
bool isSecure () const noexcept
 Returns true if stream server use encrypted connection.
void lockSessions () noexcept
 Locks stream server session buffer access. (MT-Safe).
void unlockSessions () noexcept
 Unlocks stream server session buffer access. (MT-Safe).
StreamSessionViewgetSessions () noexcept
 Returns stream server session buffer.
size_t getSessionCount () noexcept
 Returns stream server session count.
int updateSession (StreamSessionView streamSession, double currentTime) noexcept
 Updates specified stream server session.
void destroySession (StreamSessionView streamSession, int reason) noexcept
 Destroys specified stream server session.
void flushSessions () noexcept
 Flushes destroyed stream server sessions.
NetsResult sendDatagram (SocketAddressView remoteAddress, const void *data, size_t byteCount) noexcept
 Sends datagram to the specified stream session. (UDP).
NetsResult sendDatagram (SocketAddressView remoteAddress, const OutStreamMessage &message) noexcept
 Sends datagram to the specified session. (UDP).

Protected Attributes

StreamServer_Tinstance = nullptr

Detailed Description

Stream server instance handle. (TCP).

See the stream-server.h

Constructor & Destructor Documentation

◆ IStreamServer()

IStreamServer ( SocketFamily socketFamily,
const char * service,
size_t sessionBufferSize = 512,
size_t connectionQueueSize = 256,
size_t receiveBufferSize = UINT16_MAX + 1,
double timeoutTime = 5.0,
SslContextView sslContext = nullptr )
inline

Creates a new stream server instance. (TCP).

See the createStreamServer().

Parameters
socketFamilylocal socket IP address family
[in]servicelocal IP address service string (port)
sessionBufferSizemaximum stream session count
connectionQueueSizepending connections queue size
receiveBufferSizereceive data buffer size in bytes
timeoutTimesession 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 server instance.

See the destroyStreamServer().

◆ onSessionCreate()

virtual void * onSessionCreate ( StreamSessionView streamSession)
pure virtual

Stream session create function. (TCP).

Warning
This function is called asynchronously from the receive thread!
Returns
Custom stream session handle on success, otherwise NULL.
Parameters
streamSessiona new accepted stream session instance

◆ onSessionDestroy()

virtual void onSessionDestroy ( StreamSessionView streamSession,
int reason )
pure virtual

Stream session destroy function. (TCP).

Note
This function is called synchronously.
Parameters
streamSessionstream session instance
reasonstream session destruction reason

◆ onStreamReceive()

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

Stream session data receive function. (TCP).

Server destroys session on this function non zero return result.

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

◆ onDatagramReceive()

virtual void onDatagramReceive ( SocketAddressView remoteAddress,
const uint8_t * receiveBuffer,
size_t byteCount )
pure virtual

Stream server datagram receive function. (UDP).

Warning
This function is called asynchronously from the receive thread!
Parameters
remoteAddresssender remote socket address
[in]receiveBufferreceived data buffer
byteCountreceived byte count

◆ reasonToString()

virtual string reasonToString ( int reason)
inlinevirtual

Converts reason value to string.

Parameters
reasontarget reason value

◆ getSessionBufferSize()

size_t getSessionBufferSize ( ) const
inlinenoexcept

Returns stream server session buffer size.

See the getStreamServerSessionBufferSize().

◆ getReceiveBufferSize()

size_t getReceiveBufferSize ( ) const
inlinenoexcept

Returns stream server receive buffer size in bytes.

See the getStreamServerReceiveBufferSize().

◆ getTimeoutTime()

double getTimeoutTime ( ) const
inlinenoexcept

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

See the getStreamServerTimeoutTime().

◆ getReceiveBuffer()

uint8_t * getReceiveBuffer ( ) const
inlinenoexcept

Returns stream server receive data buffer.

See the getStreamServerReceiveBuffer().

◆ getSocket()

SocketView getSocket ( ) const
inlinenoexcept

Returns stream server socket instance.

See the getStreamServerSocket().

◆ isRunning()

bool isRunning ( ) const
inlinenoexcept

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

See the isStreamServerRunning().

◆ isSecure()

bool isSecure ( ) const
inlinenoexcept

Returns true if stream server use encrypted connection.

See the isStreamServerSecure().

◆ lockSessions()

void lockSessions ( )
inlinenoexcept

Locks stream server session buffer access. (MT-Safe).

See the lockStreamServerSessions().

◆ unlockSessions()

void unlockSessions ( )
inlinenoexcept

Unlocks stream server session buffer access. (MT-Safe).

See the unlockStreamServerSessions().

◆ getSessions()

StreamSessionView * getSessions ( )
inlinenoexcept

Returns stream server session buffer.

See the getStreamServerSessions().

Warning
You should lock sessions before getting!

◆ getSessionCount()

size_t getSessionCount ( )
inlinenoexcept

Returns stream server session count.

See the getStreamServerSessionCount().

Warning
You should lock sessions before getting!

◆ updateSession()

int updateSession ( StreamSessionView streamSession,
double currentTime )
inlinenoexcept

Updates specified stream server session.

See the updateStreamSession().

Warning
You should lock sessions before updating!
Returns
Zero on success, otherwise failure reason.
Parameters
streamSessionstream session instance to update
currentTimecurrent time value

◆ destroySession()

void destroySession ( StreamSessionView streamSession,
int reason )
inlinenoexcept

Destroys specified stream server session.

See the destroyStreamSession().

Warning
You should lock sessions before closing!
Parameters
streamSessionstream session instance to close
reasonstream session destruction reason

◆ flushSessions()

void flushSessions ( )
inlinenoexcept

Flushes destroyed stream server sessions.

See the flushStreamSessions().

Warning
You should lock sessions before closing!

◆ sendDatagram() [1/2]

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

Sends datagram to the specified stream session. (UDP).

See the streamServerSendDatagram().

Returns
The operation NetsResult code.
Parameters
remoteAddresstarget remote socket IP address
[in]datasend data buffer
byteCountdata byte count to send

◆ sendDatagram() [2/2]

NetsResult sendDatagram ( SocketAddressView remoteAddress,
const OutStreamMessage & message )
inlinenoexcept

Sends datagram to the specified session. (UDP).

See the streamServerSendDatagram().

Returns
The operation NetsResult code.
Parameters
remoteAddresstarget remote socket IP address
[in]messagedatagram message to send