11 #include <restinio/traits.hpp> 12 #include <restinio/impl/tls_socket.hpp> 49 template <
typename Connection,
typename Start_Read_CB,
typename Failed_CB >
52 tls_socket_t & socket,
54 Start_Read_CB start_read_cb,
77 template <
typename Settings >
78 class socket_type_dependent_settings_t< Settings, tls_socket_t >
86 socket_type_dependent_settings_t && ) =
default;
90 asio_ns::ssl::context context ) &
92 m_tls_context = std::move( context );
93 return upcast_reference();
98 asio_ns::ssl::context context ) &&
100 return std::move(
this->tls_context( std::move( context ) ) );
106 return asio_ns::ssl::context{ std::move( m_tls_context ) };
113 return static_cast< Settings & >( *
this );
128 class socket_supplier_t< tls_socket_t >
131 template <
typename Settings >
134 asio_ns::io_context & io_context )
135 : m_tls_context{ std::make_shared< asio_ns::ssl::context >( settings.tls_context() ) }
136 , m_io_context{ io_context }
138 m_sockets.reserve( settings.concurrent_accepts_count() );
140 while( m_sockets.size() < settings.concurrent_accepts_count() )
142 m_sockets.emplace_back( m_io_context, m_tls_context );
153 return m_sockets.at( idx );
161 tls_socket_t res{ m_io_context, m_tls_context };
162 std::swap( res, m_sockets.at( idx ) );
171 return m_sockets.size();
asio_ns::ssl::context m_tls_context
tls_socket_t & socket(std::size_t idx)
Settings & upcast_reference()
asio_ns::ssl::context tls_context()
Settings & tls_context(asio_ns::ssl::context context) &
socket_type_dependent_settings_t()=default
socket_type_dependent_settings_t(socket_type_dependent_settings_t &&)=default
void prepare_connection_and_start_read(tls_socket_t &socket, Connection &con, Start_Read_CB start_read_cb, Failed_CB failed_cb)
Customizes connection init routine with an additional step: perform handshake and only then start rea...
auto cuncurrent_accept_sockets_count() const
The number of sockets that can be used for cuncurrent accept operations.
~socket_type_dependent_settings_t()=default
socket_supplier_t(Settings &settings, asio_ns::io_context &io_context)
std::vector< tls_socket_t > m_sockets
asio_ns::io_context & m_io_context
Settings && tls_context(asio_ns::ssl::context context) &&
std::shared_ptr< asio_ns::ssl::context > m_tls_context
auto move_socket(std::size_t idx)
virtual ~socket_supplier_t()=default
std::enable_if< std::is_same< Parameter_Container, query_string_params_t >::value||std::is_same< Parameter_Container, router::route_params_t >::value, optional_t< Value_Type > >::type opt_value(const Parameter_Container ¶ms, string_view_t key)
Gets the value of a parameter specified by key wrapped in optional_t<Value_Type> if parameter exists ...