Babel
Epitech's C++ VoIP project
Public Member Functions | Private Member Functions | Private Attributes | List of all members
Babel::AsioTCPConnection< T > Class Template Reference

Asio implementation of a tcp communication. More...

#include <AsioTCPConnection.hpp>

Inheritance diagram for Babel::AsioTCPConnection< T >:
Collaboration diagram for Babel::AsioTCPConnection< T >:

Public Member Functions

void connect (const std::string &hostname, uint16_t port) override
 connect to a hostname and a port More...
 
void disconnect () override
 disconnect the connection More...
 
bool isConnected () const override
 Tells if the connection is up. More...
 
void send (Message< T > message) override
 Send the message. More...
 
void readForMessages () override
 listen for new messages More...
 
uint64_t getId () const override
 Get the id of this connection. More...
 
std::string getPeerIp () const override
 Get the connected pair address. More...
 
uint16_t getPeerPort () const override
 get the connected pair port More...
 
void setId (uint64_t id) override
 set the id of the connection More...
 
void setCallbackOnMessage (std::function< void(Message< T >)> callMessageReceived) override
 set the callback to be called when a message is received More...
 
 AsioTCPConnection (asio::io_context &ioContext, asio::ip::tcp::socket socket)
 
 ~AsioTCPConnection () override
 
- Public Member Functions inherited from Babel::ITCPConnection< T >
virtual ~ITCPConnection ()=default
 default dtor More...
 

Private Member Functions

void writeHeader ()
 write a message header More...
 
void writeBody ()
 write a message body More...
 
void readHeader ()
 read a message header More...
 
void readBody ()
 read a message body More...
 

Private Attributes

asio::io_context & _ioContext
 The asio context to link everything. More...
 
asio::ip::tcp::socket _socket
 The connection's socket. More...
 
std::function< void(Message< T >)> _callbackMessageReceived
 The function called when a message has been fully received. More...
 
TSQueue< Message< T > > _messagesIn
 All the received messages. More...
 
TSQueue< Message< T > > _messagesOut
 All the messages that need to be sent. More...
 
Message< T > _tmpMessage
 Message used when reading a message. More...
 
uint64_t _id
 id used to identify the connection More...
 

Detailed Description

template<typename T>
class Babel::AsioTCPConnection< T >

Asio implementation of a tcp communication.

Constructor & Destructor Documentation

◆ AsioTCPConnection()

template<typename T >
Babel::AsioTCPConnection< T >::AsioTCPConnection ( asio::io_context &  ioContext,
asio::ip::tcp::socket  socket 
)
explicit

◆ ~AsioTCPConnection()

template<typename T >
Babel::AsioTCPConnection< T >::~AsioTCPConnection
override

Member Function Documentation

◆ connect()

template<typename T >
void Babel::AsioTCPConnection< T >::connect ( const std::string &  hostname,
uint16_t  port 
)
overridevirtual

connect to a hostname and a port

Implements Babel::ITCPConnection< T >.

◆ disconnect()

template<typename T >
void Babel::AsioTCPConnection< T >::disconnect
overridevirtual

disconnect the connection

Implements Babel::ITCPConnection< T >.

◆ getId()

template<typename T >
uint64_t Babel::AsioTCPConnection< T >::getId
overridevirtual

Get the id of this connection.

Implements Babel::ITCPConnection< T >.

◆ getPeerIp()

template<typename T >
std::string Babel::AsioTCPConnection< T >::getPeerIp
overridevirtual

Get the connected pair address.

Implements Babel::ITCPConnection< T >.

◆ getPeerPort()

template<typename T >
uint16_t Babel::AsioTCPConnection< T >::getPeerPort
overridevirtual

get the connected pair port

Implements Babel::ITCPConnection< T >.

◆ isConnected()

template<typename T >
bool Babel::AsioTCPConnection< T >::isConnected
overridevirtual

Tells if the connection is up.

Implements Babel::ITCPConnection< T >.

◆ readBody()

template<typename T >
void Babel::AsioTCPConnection< T >::readBody
private

read a message body

◆ readForMessages()

template<typename T >
void Babel::AsioTCPConnection< T >::readForMessages
overridevirtual

listen for new messages

Implements Babel::ITCPConnection< T >.

◆ readHeader()

template<typename T >
void Babel::AsioTCPConnection< T >::readHeader
private

read a message header

◆ send()

template<typename T >
void Babel::AsioTCPConnection< T >::send ( Message< T >  message)
overridevirtual

Send the message.

Implements Babel::ITCPConnection< T >.

◆ setCallbackOnMessage()

template<typename T >
void Babel::AsioTCPConnection< T >::setCallbackOnMessage ( std::function< void(Message< T >)>  callMessageReceived)
overridevirtual

set the callback to be called when a message is received

Implements Babel::ITCPConnection< T >.

◆ setId()

template<typename T >
void Babel::AsioTCPConnection< T >::setId ( uint64_t  id)
overridevirtual

set the id of the connection

Implements Babel::ITCPConnection< T >.

◆ writeBody()

template<typename T >
void Babel::AsioTCPConnection< T >::writeBody
private

write a message body

◆ writeHeader()

template<typename T >
void Babel::AsioTCPConnection< T >::writeHeader
private

write a message header

Member Data Documentation

◆ _callbackMessageReceived

template<typename T >
std::function<void(Message<T>)> Babel::AsioTCPConnection< T >::_callbackMessageReceived
private

The function called when a message has been fully received.

◆ _id

template<typename T >
uint64_t Babel::AsioTCPConnection< T >::_id
private

id used to identify the connection

◆ _ioContext

template<typename T >
asio::io_context& Babel::AsioTCPConnection< T >::_ioContext
private

The asio context to link everything.

◆ _messagesIn

template<typename T >
TSQueue<Message<T> > Babel::AsioTCPConnection< T >::_messagesIn
private

All the received messages.

◆ _messagesOut

template<typename T >
TSQueue<Message<T> > Babel::AsioTCPConnection< T >::_messagesOut
private

All the messages that need to be sent.

◆ _socket

template<typename T >
asio::ip::tcp::socket Babel::AsioTCPConnection< T >::_socket
private

The connection's socket.

◆ _tmpMessage

template<typename T >
Message<T> Babel::AsioTCPConnection< T >::_tmpMessage
private

Message used when reading a message.


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