RESTinio
Public Types | Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
restinio::impl::acceptor_t< Traits > Class Template Referencefinal

Context for accepting http connections. More...

#include <acceptor.hpp>

Inheritance diagram for restinio::impl::acceptor_t< Traits >:
restinio::impl::socket_supplier_t< Traits::stream_socket_t > restinio::impl::acceptor_details::ip_blocker_holder_t< Traits::ip_blocker_t >

Public Types

using connection_factory_t = impl::connection_factory_t< Traits >
 
using connection_factory_shared_ptr_t = std::shared_ptr< connection_factory_t >
 
using logger_t = typename Traits::logger_t
 
using strand_t = typename Traits::strand_t
 
using stream_socket_t = typename Traits::stream_socket_t
 
using socket_holder_base_t = socket_supplier_t< stream_socket_t >
 

Public Member Functions

template<typename Settings >
 acceptor_t (Settings &settings, asio_ns::io_context &io_context, connection_factory_shared_ptr_t connection_factory, logger_t &logger)
 
void open ()
 Start listen on port specified in ctor. More...
 
void close ()
 Close listener if any. More...
 
auto & get_open_close_operations_executor () noexcept
 Get an executor for close operation. More...
 

Private Types

using ip_blocker_base_t = acceptor_details::ip_blocker_holder_t< typename Traits::ip_blocker_t >
 

Private Member Functions

auto & get_executor () noexcept
 Get executor for acceptor. More...
 
void accept_next (std::size_t i)
 Set a callback for a new connection. More...
 
void accept_current_connection (std::size_t i, const std::error_code &ec)
 Accept current connection. More...
 
void do_accept_current_connection (stream_socket_t incoming_socket, endpoint_t remote_endpoint)
 
void close_impl ()
 Close opened acceptor. More...
 

Private Attributes

asio_ns::executor m_executor
 Asio executor. More...
 
strand_t m_open_close_operations_executor
 
const bool m_separate_accept_and_create_connect
 Do separate an accept operation and connection instantiation. More...
 
connection_factory_shared_ptr_t m_connection_factory
 Factory for creating connections. More...
 
logger_tm_logger
 
const std::uint16_t m_port
 Server endpoint. More...
 
const asio_ns::ip::tcp m_protocol
 
const std::string m_address
 
std::unique_ptr< acceptor_options_setter_tm_acceptor_options_setter
 Server port listener and connection receiver routine. More...
 
asio_ns::ip::tcp::acceptor m_acceptor
 

Additional Inherited Members

- Protected Member Functions inherited from restinio::impl::socket_supplier_t< Traits::stream_socket_t >
 socket_supplier_t (Settings &settings, asio_ns::io_context &io_context)
 
Traits::stream_socket_t & socket (std::size_t idx)
 Get the reference to socket. More...
 
Traits::stream_socket_t move_socket (std::size_t idx)
 Extract the socket via move. More...
 
auto cuncurrent_accept_sockets_count () const noexcept
 The number of sockets that can be used for cuncurrent accept operations. More...
 
- Protected Member Functions inherited from restinio::impl::acceptor_details::ip_blocker_holder_t< Traits::ip_blocker_t >
 ip_blocker_holder_t (const Settings &settings)
 
restinio::ip_blocker::inspection_result_t inspect_incoming (Socket &socket) const noexcept
 
- Protected Attributes inherited from restinio::impl::acceptor_details::ip_blocker_holder_t< Traits::ip_blocker_t >
std::shared_ptr< Traits::ip_blocker_t > m_ip_blocker
 

Detailed Description

template<typename Traits>
class restinio::impl::acceptor_t< Traits >

Context for accepting http connections.

Definition at line 159 of file acceptor.hpp.

Member Typedef Documentation

◆ connection_factory_shared_ptr_t

template<typename Traits >
using restinio::impl::acceptor_t< Traits >::connection_factory_shared_ptr_t = std::shared_ptr< connection_factory_t >

Definition at line 170 of file acceptor.hpp.

◆ connection_factory_t

template<typename Traits >
using restinio::impl::acceptor_t< Traits >::connection_factory_t = impl::connection_factory_t< Traits >

Definition at line 168 of file acceptor.hpp.

◆ ip_blocker_base_t

template<typename Traits >
using restinio::impl::acceptor_t< Traits >::ip_blocker_base_t = acceptor_details::ip_blocker_holder_t< typename Traits::ip_blocker_t >
private

Definition at line 165 of file acceptor.hpp.

◆ logger_t

template<typename Traits >
using restinio::impl::acceptor_t< Traits >::logger_t = typename Traits::logger_t

Definition at line 171 of file acceptor.hpp.

◆ socket_holder_base_t

template<typename Traits >
using restinio::impl::acceptor_t< Traits >::socket_holder_base_t = socket_supplier_t< stream_socket_t >

Definition at line 174 of file acceptor.hpp.

◆ strand_t

template<typename Traits >
using restinio::impl::acceptor_t< Traits >::strand_t = typename Traits::strand_t

Definition at line 172 of file acceptor.hpp.

◆ stream_socket_t

template<typename Traits >
using restinio::impl::acceptor_t< Traits >::stream_socket_t = typename Traits::stream_socket_t

Definition at line 173 of file acceptor.hpp.

Constructor & Destructor Documentation

◆ acceptor_t()

template<typename Traits >
template<typename Settings >
restinio::impl::acceptor_t< Traits >::acceptor_t ( Settings &  settings,
asio_ns::io_context &  io_context,
connection_factory_shared_ptr_t  connection_factory,
logger_t logger 
)
inline
Parameters
io_contextASIO io_context to run on.
connection_factoryConnection factory.
loggerLogger.

Definition at line 177 of file acceptor.hpp.

Member Function Documentation

◆ accept_current_connection()

template<typename Traits >
void restinio::impl::acceptor_t< Traits >::accept_current_connection ( std::size_t  i,
const std::error_code &  ec 
)
inlineprivate

Accept current connection.

Parameters
isocket index in the pool of sockets.

Definition at line 314 of file acceptor.hpp.

◆ accept_next()

template<typename Traits >
void restinio::impl::acceptor_t< Traits >::accept_next ( std::size_t  i)
inlineprivate

Set a callback for a new connection.

Definition at line 298 of file acceptor.hpp.

◆ close()

template<typename Traits >
void restinio::impl::acceptor_t< Traits >::close ( )
inline

Close listener if any.

Definition at line 271 of file acceptor.hpp.

◆ close_impl()

template<typename Traits >
void restinio::impl::acceptor_t< Traits >::close_impl ( )
inlineprivate

Close opened acceptor.

Definition at line 405 of file acceptor.hpp.

◆ do_accept_current_connection()

template<typename Traits >
void restinio::impl::acceptor_t< Traits >::do_accept_current_connection ( stream_socket_t  incoming_socket,
endpoint_t  remote_endpoint 
)
inlineprivate

If connection handler was created,

Definition at line 373 of file acceptor.hpp.

◆ get_executor()

template<typename Traits >
auto& restinio::impl::acceptor_t< Traits >::get_executor ( )
inlineprivatenoexcept

Get executor for acceptor.

Definition at line 294 of file acceptor.hpp.

◆ get_open_close_operations_executor()

template<typename Traits >
auto& restinio::impl::acceptor_t< Traits >::get_open_close_operations_executor ( )
inlinenoexcept

Get an executor for close operation.

Definition at line 287 of file acceptor.hpp.

◆ open()

template<typename Traits >
void restinio::impl::acceptor_t< Traits >::open ( )
inline

Start listen on port specified in ctor.

Definition at line 201 of file acceptor.hpp.

Member Data Documentation

◆ m_acceptor

template<typename Traits >
asio_ns::ip::tcp::acceptor restinio::impl::acceptor_t< Traits >::m_acceptor
private

Definition at line 430 of file acceptor.hpp.

◆ m_acceptor_options_setter

template<typename Traits >
std::unique_ptr< acceptor_options_setter_t > restinio::impl::acceptor_t< Traits >::m_acceptor_options_setter
private

Server port listener and connection receiver routine.

Definition at line 429 of file acceptor.hpp.

◆ m_address

template<typename Traits >
const std::string restinio::impl::acceptor_t< Traits >::m_address
private

Definition at line 424 of file acceptor.hpp.

◆ m_connection_factory

template<typename Traits >
connection_factory_shared_ptr_t restinio::impl::acceptor_t< Traits >::m_connection_factory
private

Factory for creating connections.

Definition at line 441 of file acceptor.hpp.

◆ m_executor

template<typename Traits >
asio_ns::executor restinio::impl::acceptor_t< Traits >::m_executor
private

Asio executor.

Definition at line 434 of file acceptor.hpp.

◆ m_logger

template<typename Traits >
logger_t& restinio::impl::acceptor_t< Traits >::m_logger
private

Definition at line 443 of file acceptor.hpp.

◆ m_open_close_operations_executor

template<typename Traits >
strand_t restinio::impl::acceptor_t< Traits >::m_open_close_operations_executor
private

Definition at line 435 of file acceptor.hpp.

◆ m_port

template<typename Traits >
const std::uint16_t restinio::impl::acceptor_t< Traits >::m_port
private

Server endpoint.

Definition at line 422 of file acceptor.hpp.

◆ m_protocol

template<typename Traits >
const asio_ns::ip::tcp restinio::impl::acceptor_t< Traits >::m_protocol
private

Definition at line 423 of file acceptor.hpp.

◆ m_separate_accept_and_create_connect

template<typename Traits >
const bool restinio::impl::acceptor_t< Traits >::m_separate_accept_and_create_connect
private

Do separate an accept operation and connection instantiation.

Definition at line 438 of file acceptor.hpp.


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