RESTinio
|
Context for accepting http connections. More...
#include <acceptor.hpp>
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 > |
using | connection_count_limiter_t = typename connection_count_limit_types< Traits >::limiter_t |
using | connection_lifetime_monitor_t = typename connection_count_limit_types< Traits >::lifetime_monitor_t |
Private Member Functions | |
auto & | get_executor () noexcept |
Get executor for acceptor. More... | |
void | call_accept_now (std::size_t index) noexcept |
void | schedule_next_accept_attempt (std::size_t index) noexcept |
::restinio::connection_count_limits::impl::acceptor_callback_iface_t * | self_as_acceptor_callback () noexcept |
Helper for suppressing warnings of using this in initilizer list. More... | |
void | accept_next (std::size_t i) noexcept |
Set a callback for a new connection. More... | |
void | accept_current_connection (std::size_t i, const std::error_code &ec) noexcept |
Accept current connection. More... | |
void | accept_connection_for_socket_with_index (std::size_t i) |
Performs actual actions for accepting a new connection. More... | |
void | do_accept_current_connection (stream_socket_t incoming_socket, endpoint_t remote_endpoint) |
void | close_impl () |
Close opened acceptor. More... | |
Static Private Member Functions | |
static RESTINIO_NODISCARD optional_t< asio_ns::ip::address > | try_extract_actual_address_from_variant (const restinio::details::address_variant_t &from) |
Helper for extraction of an actual IP-address from an instance of address_variant. More... | |
Private Attributes | |
default_asio_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_t & | m_logger |
connection_count_limiter_t | m_connection_count_limiter |
Actual limiter of active parallel connections. More... | |
const std::uint16_t | m_port |
Server endpoint. More... | |
const asio_ns::ip::tcp | m_protocol |
const restinio::details::address_variant_t | m_address |
std::unique_ptr< acceptor_options_setter_t > | m_acceptor_options_setter |
Server port listener and connection receiver routine. More... | |
asio_ns::ip::tcp::acceptor | m_acceptor |
acceptor_post_bind_hook_t | m_acceptor_post_bind_hook |
A hook to be called just after a successful call to bind for acceptor. More... | |
Additional Inherited Members | |
![]() | |
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 | concurrent_accept_sockets_count () const noexcept |
The number of sockets that can be used for cuncurrent accept operations. More... | |
![]() | |
template<typename Settings > | |
ip_blocker_holder_t (const Settings &settings) | |
template<typename Socket > | |
restinio::ip_blocker::inspection_result_t | inspect_incoming (Socket &socket) const noexcept |
virtual void | call_accept_now (std::size_t index) noexcept=0 |
virtual void | schedule_next_accept_attempt (std::size_t index) noexcept=0 |
![]() | |
std::shared_ptr< Ip_Blocker > | m_ip_blocker |
Context for accepting http connections.
Definition at line 162 of file acceptor.hpp.
|
private |
Definition at line 171 of file acceptor.hpp.
using restinio::impl::acceptor_t< Traits >::connection_factory_shared_ptr_t = std::shared_ptr< connection_factory_t > |
Definition at line 178 of file acceptor.hpp.
using restinio::impl::acceptor_t< Traits >::connection_factory_t = impl::connection_factory_t< Traits > |
Definition at line 177 of file acceptor.hpp.
|
private |
Definition at line 173 of file acceptor.hpp.
|
private |
Definition at line 168 of file acceptor.hpp.
using restinio::impl::acceptor_t< Traits >::logger_t = typename Traits::logger_t |
Definition at line 180 of file acceptor.hpp.
using restinio::impl::acceptor_t< Traits >::socket_holder_base_t = socket_supplier_t< stream_socket_t > |
Definition at line 183 of file acceptor.hpp.
using restinio::impl::acceptor_t< Traits >::strand_t = typename Traits::strand_t |
Definition at line 181 of file acceptor.hpp.
using restinio::impl::acceptor_t< Traits >::stream_socket_t = typename Traits::stream_socket_t |
Definition at line 182 of file acceptor.hpp.
|
inline |
io_context | ASIO io_context to run on. |
connection_factory | Connection factory. |
logger | Logger. |
Definition at line 186 of file acceptor.hpp.
|
inlineprivate |
Performs actual actions for accepting a new connection.
i | socket index in the pool of sockets. |
Definition at line 431 of file acceptor.hpp.
|
inlineprivatenoexcept |
Accept current connection.
i | socket index in the pool of sockets. |
Definition at line 392 of file acceptor.hpp.
|
inlineprivatenoexcept |
Set a callback for a new connection.
std::terminate
because an exception is raised inside noexcept
method seems to be an appropriate solution. Definition at line 381 of file acceptor.hpp.
|
inlineprivatevirtualnoexcept |
Implements restinio::connection_count_limits::impl::acceptor_callback_iface_t.
Definition at line 326 of file acceptor.hpp.
|
inline |
Close listener if any.
Definition at line 296 of file acceptor.hpp.
|
inlineprivate |
Close opened acceptor.
Definition at line 521 of file acceptor.hpp.
|
inlineprivate |
Definition at line 474 of file acceptor.hpp.
|
inlineprivatenoexcept |
Get executor for acceptor.
Definition at line 319 of file acceptor.hpp.
|
inlinenoexcept |
Get an executor for close operation.
Definition at line 312 of file acceptor.hpp.
|
inline |
Start listen on port specified in ctor.
Definition at line 220 of file acceptor.hpp.
|
inlineprivatevirtualnoexcept |
Implements restinio::connection_count_limits::impl::acceptor_callback_iface_t.
Definition at line 346 of file acceptor.hpp.
|
inlineprivatenoexcept |
Helper for suppressing warnings of using this
in initilizer list.
Definition at line 364 of file acceptor.hpp.
|
inlinestaticprivate |
Helper for extraction of an actual IP-address from an instance of address_variant.
Returns an empty value if there is no address inside from.
Definition at line 587 of file acceptor.hpp.
|
private |
Definition at line 549 of file acceptor.hpp.
|
private |
Server port listener and connection receiver routine.
Definition at line 548 of file acceptor.hpp.
|
private |
A hook to be called just after a successful call to bind for acceptor.
Definition at line 555 of file acceptor.hpp.
|
private |
Definition at line 543 of file acceptor.hpp.
|
private |
Actual limiter of active parallel connections.
Definition at line 575 of file acceptor.hpp.
|
private |
Factory for creating connections.
Definition at line 566 of file acceptor.hpp.
|
private |
Asio executor.
Definition at line 559 of file acceptor.hpp.
|
private |
Definition at line 568 of file acceptor.hpp.
|
private |
Definition at line 560 of file acceptor.hpp.
|
private |
Server endpoint.
Definition at line 541 of file acceptor.hpp.
|
private |
Definition at line 542 of file acceptor.hpp.
|
private |
Do separate an accept operation and connection instantiation.
Definition at line 563 of file acceptor.hpp.