reSIProcate
SIP stack, Dialog Usage Manager and related libraries
Loading...
Searching...
No Matches
reTurn::AsyncUdpSocketBase Class Reference

#include <AsyncUdpSocketBase.hxx>

Inheritance diagram for reTurn::AsyncUdpSocketBase:
[legend]

Public Member Functions

 AsyncUdpSocketBase (asio::io_context &ioService)
 
unsigned int getSocketDescriptor () override
 
asio::error_code bind (const asio::ip::address &address, unsigned short port) override
 Note: The following API's are thread safe and queue the request to be handled by the ioService thread.
 
void connect (const std::string &address, unsigned short port) override
 
void transportReceive () override
 
void transportFramedReceive () override
 
void transportSend (const StunTuple &destination, std::vector< asio::const_buffer > &buffers) override
 
void transportClose () override
 
asio::ip::address getSenderEndpointAddress () override
 
unsigned short getSenderEndpointPort () override
 
- Public Member Functions inherited from reTurn::AsyncSocketBase
 AsyncSocketBase (asio::io_context &ioService)
 
virtual ~AsyncSocketBase ()
 
virtual void registerAsyncSocketBaseHandler (AsyncSocketBaseHandler *handler)
 
virtual void send (const StunTuple &destination, const std::shared_ptr< DataBuffer > &data)
 Note: destination is ignored for TCP and TLS connections.
 
virtual void send (const StunTuple &destination, unsigned short channel, const std::shared_ptr< DataBuffer > &data)
 
virtual void receive ()
 Overlapped calls to receive functions have no effect.
 
virtual void framedReceive ()
 
virtual void close ()
 
bool isConnected () const noexcept
 
asio::ip::address & getConnectedAddress () noexcept
 
unsigned short getConnectedPort () const noexcept
 
virtual void setOnBeforeSocketClosedFp (BeforeClosedHandler fp)
 
virtual void doSend (const StunTuple &destination, unsigned short channel, const std::shared_ptr< DataBuffer > &data, const std::size_t bufferStartPos=0)
 Use these if you already operating within the ioService thread.
 
virtual void doSend (const StunTuple &destination, const std::shared_ptr< DataBuffer > &data, const std::size_t bufferStartPos=0)
 
virtual void doReceive ()
 
virtual void doFramedReceive ()
 
virtual void onConnectSuccess ()
 Class override callbacks.
 
virtual void onConnectFailure (const asio::error_code &e)
 
virtual void onReceiveSuccess (const asio::ip::address &address, unsigned short port, const std::shared_ptr< DataBuffer > &data)=0
 
virtual void onReceiveFailure (const asio::error_code &e)=0
 
virtual void onSendSuccess ()=0
 
virtual void onSendFailure (const asio::error_code &e)=0
 
virtual void start ()
 
virtual void stop ()
 
virtual void handleReadHeader (const asio::error_code &e)
 
virtual void handleServerHandshake (const asio::error_code &e)
 
virtual void handleTcpResolve (const asio::error_code &ec, const asio::ip::tcp::resolver::results_type &endpoints)
 
virtual void handleConnect (const asio::error_code &ec, const asio::ip::tcp::endpoint &endpoint)
 
virtual void handleClientHandshake (const asio::error_code &ec, const asio::ip::tcp::endpoint &endpoint)
 

Protected Member Functions

void handleUdpResolve (const asio::error_code &ec, const asio::ip::udp::resolver::results_type &endpoints) override
 
- Protected Member Functions inherited from reTurn::AsyncSocketBase
virtual void handleSend (const asio::error_code &e)
 Handle completion of a sendData operation.
 
virtual void handleReceive (const asio::error_code &e, size_t bytesTransferred)
 
asio::error_code openAndBind (asio::ip::tcp::socket &socket)
 For TCP and TLS client sockets.
 
void asyncConnect (asio::ip::tcp::socket &socket, const asio::ip::tcp::resolver::results_type &endpoints)
 
void startIdleTimer (unsigned int timeoutSeconds, std::function< bool()> inUse)
 For server connections (TcpConnectionIdleTimeout): the connection is closed, with close(), once nothing has been received on it for timeoutSeconds while inUse() is false - eg.
 
void noteReceived ()
 
void stopIdleTimer ()
 

Protected Attributes

asio::ip::udp::socket mSocket
 
asio::ip::udp::resolver mResolver
 
asio::ip::udp::endpoint mSenderEndpoint
 Endpoint info for current sender.
 
- Protected Attributes inherited from reTurn::AsyncSocketBase
asio::ip::tcp::endpoint mLocalTcpEndpoint
 
asio::io_context & mIOService
 The io_context used to perform asynchronous operations.
 
std::shared_ptr< DataBuffer > mReceiveBuffer
 Receive Buffer and state.
 
bool mReceiving
 
asio::ip::address mConnectedAddress
 Connected Info and State.
 
unsigned short mConnectedPort
 
bool mConnected
 
AsyncSocketBaseHandler * mAsyncSocketBaseHandler
 Handlers.
 
BeforeClosedHandler mOnBeforeSocketCloseFp
 Provides an opportunity for the app to clean up, e.g., QoS-related data or resources just before the socket is closed.
 

Additional Inherited Members

- Public Types inherited from reTurn::AsyncSocketBase
using BeforeClosedHandler = std::function< void(unsigned int)>
 
- Static Public Member Functions inherited from reTurn::AsyncSocketBase
static std::shared_ptr< DataBuffer > allocateBuffer (size_t size)
 Utility API.
 
static size_t channelDataPadding (size_t length)
 Over TCP and TLS, a TURN ChannelData message is padded to a multiple of 4 bytes, the padding not counted in its length (RFC 5766 11.5, RFC 8656 12.5): the padding after one of length bytes.
 
static void setExclusiveAddressUse (asio::ip::udp::socket &socket)
 For a UDP socket, between open() and bind().
 

Detailed Description

Definition at line 13 of file AsyncUdpSocketBase.hxx.

Constructor & Destructor Documentation

◆ AsyncUdpSocketBase()

reTurn::AsyncUdpSocketBase::AsyncUdpSocketBase ( asio::io_context &  ioService)
explicit

Definition at line 14 of file AsyncUdpSocketBase.cxx.

Member Function Documentation

◆ bind()

asio::error_code reTurn::AsyncUdpSocketBase::bind ( const asio::ip::address &  address,
unsigned short  port 
)
overridevirtual

Note: The following API's are thread safe and queue the request to be handled by the ioService thread.

Implements reTurn::AsyncSocketBase.

Definition at line 28 of file AsyncUdpSocketBase.cxx.

◆ connect()

void reTurn::AsyncUdpSocketBase::connect ( const std::string &  address,
unsigned short  port 
)
overridevirtual

Implements reTurn::AsyncSocketBase.

Definition at line 52 of file AsyncUdpSocketBase.cxx.

◆ getSenderEndpointAddress()

asio::ip::address reTurn::AsyncUdpSocketBase::getSenderEndpointAddress ( )
overridevirtual

Implements reTurn::AsyncSocketBase.

Definition at line 85 of file AsyncUdpSocketBase.cxx.

◆ getSenderEndpointPort()

unsigned short reTurn::AsyncUdpSocketBase::getSenderEndpointPort ( )
overridevirtual

Implements reTurn::AsyncSocketBase.

Definition at line 91 of file AsyncUdpSocketBase.cxx.

◆ getSocketDescriptor()

unsigned int reTurn::AsyncUdpSocketBase::getSocketDescriptor ( )
overridevirtual

Implements reTurn::AsyncSocketBase.

Reimplemented in reTurn::TurnAsyncUdpSocket.

Definition at line 22 of file AsyncUdpSocketBase.cxx.

◆ handleUdpResolve()

void reTurn::AsyncUdpSocketBase::handleUdpResolve ( const asio::error_code &  ec,
const asio::ip::udp::resolver::results_type &  endpoints 
)
overrideprotectedvirtual

Reimplemented from reTurn::AsyncSocketBase.

Definition at line 64 of file AsyncUdpSocketBase.cxx.

◆ transportClose()

void reTurn::AsyncUdpSocketBase::transportClose ( )
overridevirtual

Implements reTurn::AsyncSocketBase.

Definition at line 120 of file AsyncUdpSocketBase.cxx.

◆ transportFramedReceive()

void reTurn::AsyncUdpSocketBase::transportFramedReceive ( )
overridevirtual

Implements reTurn::AsyncSocketBase.

Definition at line 113 of file AsyncUdpSocketBase.cxx.

◆ transportReceive()

void reTurn::AsyncUdpSocketBase::transportReceive ( )
overridevirtual

Implements reTurn::AsyncSocketBase.

Definition at line 106 of file AsyncUdpSocketBase.cxx.

◆ transportSend()

void reTurn::AsyncUdpSocketBase::transportSend ( const StunTuple &  destination,
std::vector< asio::const_buffer > &  buffers 
)
overridevirtual

Implements reTurn::AsyncSocketBase.

Definition at line 97 of file AsyncUdpSocketBase.cxx.

Member Data Documentation

◆ mResolver

asio::ip::udp::resolver reTurn::AsyncUdpSocketBase::mResolver
protected

Definition at line 33 of file AsyncUdpSocketBase.hxx.

◆ mSenderEndpoint

asio::ip::udp::endpoint reTurn::AsyncUdpSocketBase::mSenderEndpoint
protected

Endpoint info for current sender.

Definition at line 36 of file AsyncUdpSocketBase.hxx.

◆ mSocket

asio::ip::udp::socket reTurn::AsyncUdpSocketBase::mSocket
protected

Definition at line 32 of file AsyncUdpSocketBase.hxx.


The documentation for this class was generated from the following files: