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

Represents a single connection from a client. More...

#include <TcpConnection.hxx>

Inheritance diagram for reTurn::TcpConnection:
[legend]

Public Member Functions

 TcpConnection (asio::io_context &ioService, ConnectionManager &manager, RequestHandler &handler)
 Construct a connection with the given io_context.
 
 TcpConnection (const TcpConnection &)=delete
 
 TcpConnection (TcpConnection &&)=delete
 
 ~TcpConnection ()
 
TcpConnection & operator= (const TcpConnection &)=delete
 
TcpConnection & operator= (TcpConnection &&)=delete
 
asio::ip::tcp::socket & socket ()
 Get the socket associated with the connection.
 
virtual void start ()
 Start the first asynchronous operation for the connection.
 
virtual void close ()
 Override close fn in AsyncTcpSocketBase so that we can remove ourselves from connection manager.
 
virtual void stop ()
 Stop all asynchronous operations associated with the connection.
 
- Public Member Functions inherited from reTurn::AsyncTcpSocketBase
 AsyncTcpSocketBase (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
 
virtual void setConnectedAddressAndPort ()
 
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 ()
 
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 handleServerHandshake (const asio::error_code &e)
 
virtual void handleUdpResolve (const asio::error_code &ec, const asio::ip::udp::resolver::results_type &endpoints)
 
virtual void handleClientHandshake (const asio::error_code &ec, const asio::ip::tcp::endpoint &endpoint)
 

Protected Member Functions

virtual void onReceiveSuccess (const asio::ip::address &address, unsigned short port, const std::shared_ptr< DataBuffer > &data)
 Handle completion of a receive operation.
 
virtual void onReceiveFailure (const asio::error_code &e)
 
virtual void onSendSuccess ()
 Handle completion of a send operation.
 
virtual void onSendFailure (const asio::error_code &e)
 
- Protected Member Functions inherited from reTurn::AsyncTcpSocketBase
void handleReadHeader (const asio::error_code &e) override
 
void handleTcpResolve (const asio::error_code &ec, const asio::ip::tcp::resolver::results_type &endpoints) override
 
void handleConnect (const asio::error_code &ec, const asio::ip::tcp::endpoint &endpoint) 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

ConnectionManager & mConnectionManager
 The connection manager for this connection.
 
TurnAllocationManager mTurnAllocationManager
 Manages turn allocations.
 
RequestHandler & mRequestHandler
 The handler used to process the incoming request.
 
asio::ip::address mLocalAddress
 
unsigned short mLocalPort
 
- Protected Attributes inherited from reTurn::AsyncTcpSocketBase
asio::ip::tcp::socket mSocket
 
asio::ip::tcp::resolver mResolver
 
- 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

Represents a single connection from a client.

Definition at line 18 of file TcpConnection.hxx.

Constructor & Destructor Documentation

◆ TcpConnection() [1/3]

reTurn::TcpConnection::TcpConnection ( asio::io_context &  ioService,
ConnectionManager &  manager,
RequestHandler &  handler 
)
explicit

Construct a connection with the given io_context.

Definition at line 15 of file TcpConnection.cxx.

◆ TcpConnection() [2/3]

reTurn::TcpConnection::TcpConnection ( const TcpConnection &  )
delete

◆ TcpConnection() [3/3]

reTurn::TcpConnection::TcpConnection ( TcpConnection &&  )
delete

◆ ~TcpConnection()

reTurn::TcpConnection::~TcpConnection ( )

Definition at line 23 of file TcpConnection.cxx.

Member Function Documentation

◆ close()

void reTurn::TcpConnection::close ( )
virtual

Override close fn in AsyncTcpSocketBase so that we can remove ourselves from connection manager.

Reimplemented from reTurn::AsyncSocketBase.

Definition at line 57 of file TcpConnection.cxx.

◆ onReceiveFailure()

void reTurn::TcpConnection::onReceiveFailure ( const asio::error_code &  e)
protectedvirtual

Implements reTurn::AsyncSocketBase.

Definition at line 142 of file TcpConnection.cxx.

◆ onReceiveSuccess()

void reTurn::TcpConnection::onReceiveSuccess ( const asio::ip::address &  address,
unsigned short  port,
const std::shared_ptr< DataBuffer > &  data 
)
protectedvirtual

Handle completion of a receive operation.

Implements reTurn::AsyncSocketBase.

Definition at line 63 of file TcpConnection.cxx.

◆ onSendFailure()

void reTurn::TcpConnection::onSendFailure ( const asio::error_code &  e)
protectedvirtual

Implements reTurn::AsyncSocketBase.

Definition at line 157 of file TcpConnection.cxx.

◆ onSendSuccess()

void reTurn::TcpConnection::onSendSuccess ( )
protectedvirtual

Handle completion of a send operation.

Implements reTurn::AsyncSocketBase.

Definition at line 152 of file TcpConnection.cxx.

◆ operator=() [1/2]

TcpConnection & reTurn::TcpConnection::operator= ( const TcpConnection &  )
delete

◆ operator=() [2/2]

TcpConnection & reTurn::TcpConnection::operator= ( TcpConnection &&  )
delete

◆ socket()

asio::ip::tcp::socket & reTurn::TcpConnection::socket ( )

Get the socket associated with the connection.

Definition at line 29 of file TcpConnection.cxx.

◆ start()

void reTurn::TcpConnection::start ( )
virtual

Start the first asynchronous operation for the connection.

Reimplemented from reTurn::AsyncSocketBase.

Definition at line 35 of file TcpConnection.cxx.

◆ stop()

void reTurn::TcpConnection::stop ( )
virtual

Stop all asynchronous operations associated with the connection.

Reimplemented from reTurn::AsyncSocketBase.

Definition at line 49 of file TcpConnection.cxx.

Member Data Documentation

◆ mConnectionManager

ConnectionManager& reTurn::TcpConnection::mConnectionManager
protected

The connection manager for this connection.

Definition at line 53 of file TcpConnection.hxx.

◆ mLocalAddress

asio::ip::address reTurn::TcpConnection::mLocalAddress
protected

Definition at line 62 of file TcpConnection.hxx.

◆ mLocalPort

unsigned short reTurn::TcpConnection::mLocalPort
protected

Definition at line 63 of file TcpConnection.hxx.

◆ mRequestHandler

RequestHandler& reTurn::TcpConnection::mRequestHandler
protected

The handler used to process the incoming request.

Definition at line 59 of file TcpConnection.hxx.

◆ mTurnAllocationManager

TurnAllocationManager reTurn::TcpConnection::mTurnAllocationManager
protected

Manages turn allocations.

Definition at line 56 of file TcpConnection.hxx.


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