64inline io_context_holder_t
67 return { std::make_shared< asio_ns::io_context >() };
86inline io_context_holder_t
89 return { std::shared_ptr< asio_ns::io_context >(
92 []( asio_ns::io_context * ){} )
167template <
typename Traits = default_traits_t >
197 settings.ensure_valid_connection_state_listener();
199 settings.ensure_valid_ip_blocker();
209 std::make_shared< connection_settings_t >(
210 std::forward< actual_settings_type >(settings),
211 impl::create_parser_settings< typename Traits::http_methods_mapper_t >(),
215 std::make_shared< acceptor_t >(
218 std::make_shared< connection_factory_t >(
220 settings.socket_options_setter() ),
221 *( conn_settings->m_logger ) );
225 typename Configurator,
230 std::declval<Configurator>()(
234 Configurator && configurator )
238 std::forward< Configurator >( configurator ) ) }
262 typename Server_Open_Ok_CB,
263 typename Server_Open_Error_CB >
266 Server_Open_Ok_CB open_ok_cb,
267 Server_Open_Error_CB open_err_cb )
270 m_acceptor->get_open_close_operations_executor(),
277 call_nothrow_cb( ok_cb );
281 call_nothrow_cb( [&err_cb] {
282 err_cb( std::current_exception() );
296 if( running_state_t::not_running == m_running_state )
298 m_timer_manager->start();
300 m_running_state = running_state_t::running;
316 typename Server_Close_Ok_CB,
317 typename Server_Close_Error_CB >
320 Server_Close_Ok_CB close_ok_cb,
321 Server_Close_Error_CB close_err_cb )
324 m_acceptor->get_open_close_operations_executor(),
331 call_nothrow_cb( ok_cb );
335 call_nothrow_cb( [&err_cb] {
336 err_cb( std::current_exception() );
350 if( running_state_t::running == m_running_state )
352 m_timer_manager->stop();
354 call_cleanup_functor();
355 m_running_state = running_state_t::not_running;
394 if( m_cleanup_functor )
402 template<
typename Callback >
Basic container for http_server settings.
std::unique_ptr< timer_factory_t > timer_factory()
io_context_shared_ptr_t m_io_context
A wrapper for asio io_context where server is running.
Traits traits_t
An alias for Traits type.
typename Traits::timer_manager_t timer_manager_t
void call_cleanup_functor() noexcept
Call a cleanup functor if it is defined.
http_server_t(const http_server_t &)=delete
void close_sync()
Stop server.
std::shared_ptr< acceptor_t > m_acceptor
Acceptor for new connections.
void open_async(Server_Open_Ok_CB open_ok_cb, Server_Open_Error_CB open_err_cb)
Starts server in async way.
http_server_t(io_context_holder_t io_context, basic_server_settings_t< D, Traits > &&settings)
void close_async(Server_Close_Ok_CB close_ok_cb, Server_Close_Error_CB close_err_cb)
Closes server in async way.
timer_manager_handle_t m_timer_manager
Timer manager object.
running_state_t
State of server.
http_server_t(http_server_t &&)=delete
http_server_t(io_context_holder_t io_context, Configurator &&configurator)
asio_ns::io_context & io_context() noexcept
Get io_context on which server runs.
std::shared_ptr< timer_manager_t > timer_manager_handle_t
cleanup_functor_t m_cleanup_functor
An optional user's cleanup functor.
virtual ~http_server_t()
It is allowed to inherit from http_server_t.
void open_sync()
Start server.
static void call_nothrow_cb(Callback &&cb) noexcept
Call callback and terminate the application if callback throws.
Context for accepting http connections.
Helper class for holding shared pointer to io_context.
io_context_shared_ptr_t giveaway_context()
io_context_shared_ptr_t m_context
io_context_holder_t(io_context_shared_ptr_t context)
A fluent style interface for setting http server params.
io_context_holder_t external_io_context(asio_ns::io_context &ctx)
Function which tells that http_server should use external instance of io_context and should not contr...
std::function< void(void) > cleanup_functor_t
Type of holder for user's cleanup function.
auto exec_configurator(Configurator &&configurator)
std::shared_ptr< asio_ns::io_context > io_context_shared_ptr_t
io_context_holder_t own_io_context()
Function which tells that http_server should create and use its own instance of io_context.
Parameters shared between connections.