cpp-msgpack-rpc 0.2.0
An RPC library implementing MessagePack RPC.
Loading...
Searching...
No Matches
msgpack_rpc::transport::Connection< AsioSocketType, ConcreteAddressType > Class Template Reference

Class of connections. More...

#include <msgpack_rpc/transport/connection.h>

Inheritance diagram for msgpack_rpc::transport::Connection< AsioSocketType, ConcreteAddressType >:
Collaboration diagram for msgpack_rpc::transport::Connection< AsioSocketType, ConcreteAddressType >:

Public Types

using AsioSocket = AsioSocketType
 Type of sockets in asio library.
using ConcreteAddress = ConcreteAddressType
 Type of concrete addresses.
Public Types inherited from msgpack_rpc::transport::IConnection
using ConnectionClosedCallback = std::function<void(const Status&)>
 Type of callback functions called when a connection is closed.
using MessageReceivedCallback
 Type of callback functions called when a message is received.
using MessageSentCallback = std::function<void()>
 Type of callback functions called when a message is successfully sent.

Public Member Functions

 Connection (AsioSocket &&socket, const config::MessageParserConfig &message_parser_config, std::shared_ptr< logging::Logger > logger, const std::shared_ptr< ConnectionList< Connection > > &connection_list=nullptr)
 Constructor.
 Connection (Connection &&)=delete
 Connection (const Connection &)=delete
 ~Connection () override
 Destructor.
void async_close () override
 Asynchronously close this connection.
void async_send (const messages::SerializedMessage &message) override
 Asynchronously send a message.
const addresses::IAddresslocal_address () const noexcept override
 Get the address of the local endpoint.
Connectionoperator= (Connection &&)=delete
Connectionoperator= (const Connection &)=delete
const addresses::IAddressremote_address () const noexcept override
 Get the address of the remote endpoint.
void start (MessageReceivedCallback on_received, MessageSentCallback on_sent, ConnectionClosedCallback on_closed) override
 Start process of this connection.
Public Member Functions inherited from msgpack_rpc::transport::IConnection
 IConnection (const IConnection &)=delete
 IConnection (IConnection &&)=delete
virtual ~IConnection () noexcept=default
 Destructor.
IConnectionoperator= (const IConnection &)=delete
IConnectionoperator= (IConnection &&)=delete

Private Member Functions

void async_read_next ()
 Asynchronously read next bytes.
void async_send_in_thread (const messages::SerializedMessage &message)
 Asynchronously send a message in this thread.
void close_in_thread (const Status &status)
 Close this connection in this thread.
void on_sent (const asio::error_code &error, std::size_t size)
 Handle the result of send operation.
void process_read_bytes (const asio::error_code &error, std::size_t size)
 Process read bytes.

Private Attributes

std::weak_ptr< ConnectionList< Connection > > connection_list_
 List of connections.
ConcreteAddress local_address_
 Address of the local endpoint.
std::string log_name_
 Name of the connection for logs.
std::shared_ptr< logging::Loggerlogger_
 Logger.
messages::MessageParser message_parser_
 Parser of messages.
ConnectionClosedCallback on_closed_ {}
 Callback function when this connection is closed.
MessageReceivedCallback on_received_ {}
 Callback function when a message is received.
MessageSentCallback on_sent_ {}
 Callback function when a message is sent.
ConcreteAddress remote_address_
 Address of the remote endpoint.
AsioSocket socket_
 Socket.
BackgroundTaskStateMachine state_machine_ {}
 State machine.

Additional Inherited Members

Protected Member Functions inherited from msgpack_rpc::transport::IConnection
 IConnection () noexcept=default
 Constructor.

Detailed Description

template<typename AsioSocketType, typename ConcreteAddressType>
class msgpack_rpc::transport::Connection< AsioSocketType, ConcreteAddressType >

Class of connections.

Parameters
AsioSocketTypeType of sockets in asio library.
ConcreteAddressTypeType of concrete addresses.

Definition at line 61 of file connection.h.

Member Typedef Documentation

◆ AsioSocket

template<typename AsioSocketType, typename ConcreteAddressType>
using msgpack_rpc::transport::Connection< AsioSocketType, ConcreteAddressType >::AsioSocket = AsioSocketType

Type of sockets in asio library.

Definition at line 66 of file connection.h.

◆ ConcreteAddress

template<typename AsioSocketType, typename ConcreteAddressType>
using msgpack_rpc::transport::Connection< AsioSocketType, ConcreteAddressType >::ConcreteAddress = ConcreteAddressType

Type of concrete addresses.

Definition at line 69 of file connection.h.

Constructor & Destructor Documentation

◆ Connection()

template<typename AsioSocketType, typename ConcreteAddressType>
msgpack_rpc::transport::Connection< AsioSocketType, ConcreteAddressType >::Connection ( AsioSocket && socket,
const config::MessageParserConfig & message_parser_config,
std::shared_ptr< logging::Logger > logger,
const std::shared_ptr< ConnectionList< Connection< AsioSocketType, ConcreteAddressType > > > & connection_list = nullptr )
inline

Constructor.

Parameters
[in]socketSocket.
[in]message_parser_configConfiguration of the parser of messages.
[in]loggerLogger.
[in]connection_listList of connections.

Definition at line 79 of file connection.h.

◆ ~Connection()

template<typename AsioSocketType, typename ConcreteAddressType>
msgpack_rpc::transport::Connection< AsioSocketType, ConcreteAddressType >::~Connection ( )
inlineoverride

Destructor.

Definition at line 101 of file connection.h.

Member Function Documentation

◆ async_close()

template<typename AsioSocketType, typename ConcreteAddressType>
void msgpack_rpc::transport::Connection< AsioSocketType, ConcreteAddressType >::async_close ( )
inlineoverridevirtual

Asynchronously close this connection.

Implements msgpack_rpc::transport::IConnection.

Definition at line 137 of file connection.h.

◆ async_read_next()

template<typename AsioSocketType, typename ConcreteAddressType>
void msgpack_rpc::transport::Connection< AsioSocketType, ConcreteAddressType >::async_read_next ( )
inlineprivate

Asynchronously read next bytes.

Definition at line 159 of file connection.h.

◆ async_send()

template<typename AsioSocketType, typename ConcreteAddressType>
void msgpack_rpc::transport::Connection< AsioSocketType, ConcreteAddressType >::async_send ( const messages::SerializedMessage & message)
inlineoverridevirtual

Asynchronously send a message.

Parameters
[in]messageMessage to send.

Implements msgpack_rpc::transport::IConnection.

Definition at line 125 of file connection.h.

◆ async_send_in_thread()

template<typename AsioSocketType, typename ConcreteAddressType>
void msgpack_rpc::transport::Connection< AsioSocketType, ConcreteAddressType >::async_send_in_thread ( const messages::SerializedMessage & message)
inlineprivate

Asynchronously send a message in this thread.

Parameters
[in]messageMessage.

Definition at line 230 of file connection.h.

◆ close_in_thread()

template<typename AsioSocketType, typename ConcreteAddressType>
void msgpack_rpc::transport::Connection< AsioSocketType, ConcreteAddressType >::close_in_thread ( const Status & status)
inlineprivate

Close this connection in this thread.

Parameters
[in]statusStatus.

Definition at line 276 of file connection.h.

◆ local_address()

template<typename AsioSocketType, typename ConcreteAddressType>
const addresses::IAddress & msgpack_rpc::transport::Connection< AsioSocketType, ConcreteAddressType >::local_address ( ) const
inlinenodiscardoverridevirtualnoexcept

Get the address of the local endpoint.

Returns
Address.

Implements msgpack_rpc::transport::IConnection.

Definition at line 144 of file connection.h.

◆ on_sent()

template<typename AsioSocketType, typename ConcreteAddressType>
void msgpack_rpc::transport::Connection< AsioSocketType, ConcreteAddressType >::on_sent ( const asio::error_code & error,
std::size_t size )
inlineprivate

Handle the result of send operation.

Parameters
[in]errorError.
[in]sizeMessage size.

Definition at line 247 of file connection.h.

◆ process_read_bytes()

template<typename AsioSocketType, typename ConcreteAddressType>
void msgpack_rpc::transport::Connection< AsioSocketType, ConcreteAddressType >::process_read_bytes ( const asio::error_code & error,
std::size_t size )
inlineprivate

Process read bytes.

Parameters
[in]errorError.
[in]sizeNumber of bytes read to the buffer.

Definition at line 173 of file connection.h.

◆ remote_address()

template<typename AsioSocketType, typename ConcreteAddressType>
const addresses::IAddress & msgpack_rpc::transport::Connection< AsioSocketType, ConcreteAddressType >::remote_address ( ) const
inlinenodiscardoverridevirtualnoexcept

Get the address of the remote endpoint.

Returns
Address.

Implements msgpack_rpc::transport::IConnection.

Definition at line 150 of file connection.h.

◆ start()

template<typename AsioSocketType, typename ConcreteAddressType>
void msgpack_rpc::transport::Connection< AsioSocketType, ConcreteAddressType >::start ( MessageReceivedCallback on_received,
MessageSentCallback on_sent,
ConnectionClosedCallback on_closed )
inlineoverridevirtual

Start process of this connection.

Parameters
[in]on_receivedCallback function called when a message is received.
[in]on_sentCallback function called when a message is sent.
[in]on_closedCallback function called when this connection is closed.

Implements msgpack_rpc::transport::IConnection.

Definition at line 109 of file connection.h.

Member Data Documentation

◆ connection_list_

template<typename AsioSocketType, typename ConcreteAddressType>
std::weak_ptr<ConnectionList<Connection> > msgpack_rpc::transport::Connection< AsioSocketType, ConcreteAddressType >::connection_list_
private

List of connections.

Definition at line 318 of file connection.h.

◆ local_address_

template<typename AsioSocketType, typename ConcreteAddressType>
ConcreteAddress msgpack_rpc::transport::Connection< AsioSocketType, ConcreteAddressType >::local_address_
private

Address of the local endpoint.

Definition at line 303 of file connection.h.

◆ log_name_

template<typename AsioSocketType, typename ConcreteAddressType>
std::string msgpack_rpc::transport::Connection< AsioSocketType, ConcreteAddressType >::log_name_
private

Name of the connection for logs.

Definition at line 309 of file connection.h.

◆ logger_

template<typename AsioSocketType, typename ConcreteAddressType>
std::shared_ptr<logging::Logger> msgpack_rpc::transport::Connection< AsioSocketType, ConcreteAddressType >::logger_
private

Logger.

Definition at line 312 of file connection.h.

◆ message_parser_

template<typename AsioSocketType, typename ConcreteAddressType>
messages::MessageParser msgpack_rpc::transport::Connection< AsioSocketType, ConcreteAddressType >::message_parser_
private

Parser of messages.

Definition at line 300 of file connection.h.

◆ on_closed_

template<typename AsioSocketType, typename ConcreteAddressType>
ConnectionClosedCallback msgpack_rpc::transport::Connection< AsioSocketType, ConcreteAddressType >::on_closed_ {}
private

Callback function when this connection is closed.

Definition at line 297 of file connection.h.

◆ on_received_

template<typename AsioSocketType, typename ConcreteAddressType>
MessageReceivedCallback msgpack_rpc::transport::Connection< AsioSocketType, ConcreteAddressType >::on_received_ {}
private

Callback function when a message is received.

Definition at line 291 of file connection.h.

◆ on_sent_

template<typename AsioSocketType, typename ConcreteAddressType>
MessageSentCallback msgpack_rpc::transport::Connection< AsioSocketType, ConcreteAddressType >::on_sent_ {}
private

Callback function when a message is sent.

Definition at line 294 of file connection.h.

◆ remote_address_

template<typename AsioSocketType, typename ConcreteAddressType>
ConcreteAddress msgpack_rpc::transport::Connection< AsioSocketType, ConcreteAddressType >::remote_address_
private

Address of the remote endpoint.

Definition at line 306 of file connection.h.

◆ socket_

template<typename AsioSocketType, typename ConcreteAddressType>
AsioSocket msgpack_rpc::transport::Connection< AsioSocketType, ConcreteAddressType >::socket_
private

Socket.

Definition at line 288 of file connection.h.

◆ state_machine_

template<typename AsioSocketType, typename ConcreteAddressType>
BackgroundTaskStateMachine msgpack_rpc::transport::Connection< AsioSocketType, ConcreteAddressType >::state_machine_ {}
private

State machine.

Definition at line 315 of file connection.h.


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