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

Class of acceptors. More...

#include <msgpack_rpc/transport/acceptor.h>

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

Public Types

using AsioAcceptor = AsioAcceptorType
 Type of acceptors in asio library.
using AsioSocket = AsioSocketType
 Type of sockets in asio library.
using ConcreteAddress = ConcreteAddressType
 Type of concrete addresses.
using ConnectionType = Connection<AsioSocket, ConcreteAddress>
 Type of connections.
Public Types inherited from msgpack_rpc::transport::IAcceptor
using ConnectionCallback
 Type of callback functions called when a connection is accepted.

Public Member Functions

 Acceptor (const ConcreteAddress &local_address, const std::shared_ptr< executors::IExecutor > &executor, const config::MessageParserConfig &message_parser_config, std::shared_ptr< logging::Logger > logger)
 Constructor.
const addresses::IAddresslocal_address () const noexcept override
 Get the address of the local endpoint.
void start (ConnectionCallback on_connection) override
 Start process of this acceptor.
void stop () override
 Stop this acceptor.
Public Member Functions inherited from msgpack_rpc::transport::IAcceptor
 IAcceptor (const IAcceptor &)=delete
 IAcceptor (IAcceptor &&)=delete
virtual ~IAcceptor () noexcept=default
 Destructor.
IAcceptoroperator= (const IAcceptor &)=delete
IAcceptoroperator= (IAcceptor &&)=delete

Private Member Functions

void async_accept_next ()
 Asynchronously accept a connection.
std::shared_ptr< executors::IExecutorget_executor ()
 Get the executor.
void on_accept (const asio::error_code &error)
 Handle the result of accept operation.
void stop_in_thread ()
 Stop this acceptor in this thread.

Private Attributes

AsioAcceptor acceptor_
 Acceptor.
std::shared_ptr< ConnectionList< ConnectionType > > connection_list_
 List of connections.
std::weak_ptr< executors::IExecutorexecutor_
 Executor.
ConcreteAddress local_address_
 Address of the local endpoint.
std::string log_name_
 Name of the connection for logs.
std::shared_ptr< logging::Loggerlogger_
 Logger.
config::MessageParserConfig message_parser_config_
 Configuration of parsers of messages.
ConnectionCallback on_connection_ {}
 Callback function called when a connection is accepted.
std::optional< AsioSocketsocket_ {}
 Socket to accept connections.
BackgroundTaskStateMachine state_machine_ {}
 State machine.

Additional Inherited Members

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

Detailed Description

template<typename AsioAcceptorType, typename AsioSocketType, typename ConcreteAddressType>
class msgpack_rpc::transport::Acceptor< AsioAcceptorType, AsioSocketType, ConcreteAddressType >

Class of acceptors.

Definition at line 57 of file acceptor.h.

Member Typedef Documentation

◆ AsioAcceptor

template<typename AsioAcceptorType, typename AsioSocketType, typename ConcreteAddressType>
using msgpack_rpc::transport::Acceptor< AsioAcceptorType, AsioSocketType, ConcreteAddressType >::AsioAcceptor = AsioAcceptorType

Type of acceptors in asio library.

Definition at line 63 of file acceptor.h.

◆ AsioSocket

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

Type of sockets in asio library.

Definition at line 66 of file acceptor.h.

◆ ConcreteAddress

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

Type of concrete addresses.

Definition at line 69 of file acceptor.h.

◆ ConnectionType

template<typename AsioAcceptorType, typename AsioSocketType, typename ConcreteAddressType>
using msgpack_rpc::transport::Acceptor< AsioAcceptorType, AsioSocketType, ConcreteAddressType >::ConnectionType = Connection<AsioSocket, ConcreteAddress>

Type of connections.

Definition at line 72 of file acceptor.h.

Constructor & Destructor Documentation

◆ Acceptor()

template<typename AsioAcceptorType, typename AsioSocketType, typename ConcreteAddressType>
msgpack_rpc::transport::Acceptor< AsioAcceptorType, AsioSocketType, ConcreteAddressType >::Acceptor ( const ConcreteAddress & local_address,
const std::shared_ptr< executors::IExecutor > & executor,
const config::MessageParserConfig & message_parser_config,
std::shared_ptr< logging::Logger > logger )
inline

Constructor.

Parameters
[in]local_addressLocal address.
[in]executorExecutor.
[in]message_parser_configConfiguration of the parser of messages.
[in]loggerLogger.

Definition at line 82 of file acceptor.h.

Member Function Documentation

◆ async_accept_next()

template<typename AsioAcceptorType, typename AsioSocketType, typename ConcreteAddressType>
void msgpack_rpc::transport::Acceptor< AsioAcceptorType, AsioSocketType, ConcreteAddressType >::async_accept_next ( )
inlineprivate

Asynchronously accept a connection.

Definition at line 126 of file acceptor.h.

◆ get_executor()

template<typename AsioAcceptorType, typename AsioSocketType, typename ConcreteAddressType>
std::shared_ptr< executors::IExecutor > msgpack_rpc::transport::Acceptor< AsioAcceptorType, AsioSocketType, ConcreteAddressType >::get_executor ( )
inlinenodiscardprivate

Get the executor.

Returns
Executor.

Definition at line 189 of file acceptor.h.

◆ local_address()

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

Get the address of the local endpoint.

Returns
Address.

Implements msgpack_rpc::transport::IAcceptor.

Definition at line 117 of file acceptor.h.

◆ on_accept()

template<typename AsioAcceptorType, typename AsioSocketType, typename ConcreteAddressType>
void msgpack_rpc::transport::Acceptor< AsioAcceptorType, AsioSocketType, ConcreteAddressType >::on_accept ( const asio::error_code & error)
inlineprivate

Handle the result of accept operation.

Parameters
[in]errorError.

Definition at line 140 of file acceptor.h.

◆ start()

template<typename AsioAcceptorType, typename AsioSocketType, typename ConcreteAddressType>
void msgpack_rpc::transport::Acceptor< AsioAcceptorType, AsioSocketType, ConcreteAddressType >::start ( ConnectionCallback on_connection)
inlineoverridevirtual

Start process of this acceptor.

Parameters
[in]on_connectionCallback function called when a connection is accepted.

Implements msgpack_rpc::transport::IAcceptor.

Definition at line 99 of file acceptor.h.

◆ stop()

template<typename AsioAcceptorType, typename AsioSocketType, typename ConcreteAddressType>
void msgpack_rpc::transport::Acceptor< AsioAcceptorType, AsioSocketType, ConcreteAddressType >::stop ( )
inlineoverridevirtual

Stop this acceptor.

Implements msgpack_rpc::transport::IAcceptor.

Definition at line 111 of file acceptor.h.

◆ stop_in_thread()

template<typename AsioAcceptorType, typename AsioSocketType, typename ConcreteAddressType>
void msgpack_rpc::transport::Acceptor< AsioAcceptorType, AsioSocketType, ConcreteAddressType >::stop_in_thread ( )
inlineprivate

Stop this acceptor in this thread.

Definition at line 168 of file acceptor.h.

Member Data Documentation

◆ acceptor_

template<typename AsioAcceptorType, typename AsioSocketType, typename ConcreteAddressType>
AsioAcceptor msgpack_rpc::transport::Acceptor< AsioAcceptorType, AsioSocketType, ConcreteAddressType >::acceptor_
private

Acceptor.

Definition at line 201 of file acceptor.h.

◆ connection_list_

template<typename AsioAcceptorType, typename AsioSocketType, typename ConcreteAddressType>
std::shared_ptr<ConnectionList<ConnectionType> > msgpack_rpc::transport::Acceptor< AsioAcceptorType, AsioSocketType, ConcreteAddressType >::connection_list_
private

List of connections.

Definition at line 228 of file acceptor.h.

◆ executor_

template<typename AsioAcceptorType, typename AsioSocketType, typename ConcreteAddressType>
std::weak_ptr<executors::IExecutor> msgpack_rpc::transport::Acceptor< AsioAcceptorType, AsioSocketType, ConcreteAddressType >::executor_
private

Executor.

Definition at line 207 of file acceptor.h.

◆ local_address_

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

Address of the local endpoint.

Definition at line 213 of file acceptor.h.

◆ log_name_

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

Name of the connection for logs.

Definition at line 219 of file acceptor.h.

◆ logger_

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

Logger.

Definition at line 222 of file acceptor.h.

◆ message_parser_config_

template<typename AsioAcceptorType, typename AsioSocketType, typename ConcreteAddressType>
config::MessageParserConfig msgpack_rpc::transport::Acceptor< AsioAcceptorType, AsioSocketType, ConcreteAddressType >::message_parser_config_
private

Configuration of parsers of messages.

Definition at line 216 of file acceptor.h.

◆ on_connection_

template<typename AsioAcceptorType, typename AsioSocketType, typename ConcreteAddressType>
ConnectionCallback msgpack_rpc::transport::Acceptor< AsioAcceptorType, AsioSocketType, ConcreteAddressType >::on_connection_ {}
private

Callback function called when a connection is accepted.

Definition at line 210 of file acceptor.h.

◆ socket_

template<typename AsioAcceptorType, typename AsioSocketType, typename ConcreteAddressType>
std::optional<AsioSocket> msgpack_rpc::transport::Acceptor< AsioAcceptorType, AsioSocketType, ConcreteAddressType >::socket_ {}
private

Socket to accept connections.

Definition at line 204 of file acceptor.h.

◆ state_machine_

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

State machine.

Definition at line 225 of file acceptor.h.


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