12 #include <restinio/impl/ioctx_on_thread_pool.hpp> 14 #include <restinio/http_server.hpp> 85 template<
typename Traits>
136 template<
typename Traits>
149 std::size_t pool_size )
185 std::size_t pool_size )
214 template<
typename Traits>
219 asio_ns::io_context & ioctx,
281 template<
typename Traits>
368 template<
typename Traits>
399 template<
typename Traits>
404 asio_ns::io_context & ioctx,
428 template<
typename Traits>
445 std::size_t pool_size,
451 http_server_t<Traits> & server )
492 template<
typename Traits>
495 std::size_t pool_size,
497 http_server_t<Traits> & server )
630 template<
typename Traits>
782 template<
typename Http_Server>
799 std::size_t pool_size,
803 Http_Server & server )
855 typename On_Ok_Callback,
856 typename On_Error_Callback >
860 On_Ok_Callback && on_ok,
868 On_Error_Callback && on_error )
870 static_assert(
noexcept(
on_ok()),
"On_Ok_Callback should be noexcept" );
872 "On_Error_Callback should be noexcept" );
965 stop( Error_CB error_cb = Error_CB{} )
noexcept 995 template<
typename Http_Server >
996 class running_server_instance_t;
1008 template<
typename Traits >
1027 template<
typename Http_Server >
1028 class running_server_instance_t
1030 template<
typename Traits >
1045 io_context_holder_t io_context,
1046 server_settings_t<
typename Http_Server::traits_t > && settings,
1047 std::size_t thread_pool_size )
1048 : m_server{ std::move(io_context), std::move(settings) }
1049 , m_runner{ thread_pool_size, m_server }
1064 std::promise<
void> p;
1065 auto f = p.get_future();
1067 [&p]()
noexcept { p.set_value(); },
1068 [&p]( std::exception_ptr ex )
noexcept {
1069 p.set_exception( std::move(ex) );
void initiate_shutdown(http_server_t< Traits > &server)
Helper function for initiation of server shutdown.
void run(run_on_thread_pool_settings_t< Traits > &&settings)
Helper function for running http server until ctrl+c is hit.
void run_without_break_signal_handling(ioctx_on_thread_pool_t< Io_Context_Holder > &pool, http_server_t< Traits > &server)
An implementation of run-function for thread pool case with existing http_server instance.
void wait() noexcept
Wait for the shutdown of HTTP-server.
std::size_t m_pool_size
Size of the pool.
Helper type for holding parameters necessary for running HTTP-server on a thread pool.
void run(run_existing_server_on_thread_pool_t< Traits > &¶ms)
Helper function for running an existing HTTP-server on a thread pool.
run_existing_server_on_thread_pool_t(std::size_t pool_size, break_signal_handling_t break_handling, http_server_t< Traits > &server)
Initializing constructor.
run_on_this_thread_settings_t< Traits > on_this_thread()
A special marker for the case when http_server must be run on the context of the current thread...
constexpr break_signal_handling_t skip_break_signal_handling() noexcept
Make the indicator for absence of break signal handler.
void run(ioctx_on_thread_pool_t< Io_Context_Holder > &pool, run_on_thread_pool_settings_t< Traits > &&settings)
An implementation of run-function for thread pool case.
Helper class for running an existing HTTP-server on a thread pool without blocking the current thread...
Http_Server m_server
Actual server instance.
std::size_t m_pool_size
Size of thread pool.
void run(run_on_this_thread_settings_t< Traits > &&settings)
Helper function for running http server until ctrl+c is hit.
on_pool_runner_t(std::size_t pool_size, Http_Server &server)
Initializing constructor.
http_server_t< Traits > * m_server
HTTP-server to be used on a thread pool.
Http_Server & m_server
HTTP-server to be run.
std::enable_if< std::is_same< Parameter_Container, query_string_params_t >::value||std::is_same< Parameter_Container, router::route_params_t >::value, std::optional< Value_Type > >::type opt_value(const Parameter_Container ¶ms, string_view_t key)
Gets the value of a parameter specified by key wrapped in std::optional<Value_Type> if parameter exis...
std::size_t pool_size() const noexcept
void run(asio_ns::io_context &ioctx, run_on_this_thread_settings_t< Traits > &&settings)
Helper function for running http server until ctrl+c is hit.
running_server_instance_t(io_context_holder_t io_context, server_settings_t< typename Http_Server::traits_t > &&settings, std::size_t thread_pool_size)
Initializing constructor.
run_existing_server_on_thread_pool_t< Traits > on_thread_pool(std::size_t pool_size, break_signal_handling_t break_handling, http_server_t< Traits > &server)
Helper function for running an existing HTTP-server on a thread pool.
break_signal_handling_t
Indication of usage of break signal handlers for some forms of run functions.
void wait() noexcept
Wait for full stop of the server.
void start()
Start the server.
on_pool_runner_t(on_pool_runner_t &&)=delete
break_signal_handling_t m_break_handling
Should break signal handler be used?
void operator()(std::exception_ptr) const noexcept
constexpr break_signal_handling_t use_break_signal_handling() noexcept
Make the indicator for usage of break signal handler.
on_pool_runner_t(const on_pool_runner_t &)=delete
Type of a function to be used as the default on_error-callback.
void run_with_break_signal_handling(ioctx_on_thread_pool_t< Io_Context_Holder > &pool, http_server_t< Traits > &server)
An implementation of run-function for thread pool case with existing http_server instance.
Settings for the case when http_server must be run on the context of the current thread.
running_server_handle_t< Traits > run_async(io_context_holder_t io_context, server_settings_t< Traits > &&settings, std::size_t thread_pool_size)
Creates an instance of HTTP-server and launches it on a separate thread or thread pool...
std::size_t pool_size() const
Get the pool size.
bool started() const noexcept
Is server started.
run_on_thread_pool_settings_t(std::size_t pool_size)
Constructor.
Settings for the case when http_server must be run on the context of the current thread.
run_on_thread_pool_settings_t< Traits > on_thread_pool(std::size_t pool_size)
A special marker for the case when http_server must be run on an thread pool.
Signal handler should not be used by run() function.
void start(On_Ok_Callback &&on_ok, On_Error_Callback &&on_error)
Start the server with callbacks that will be called on success or failure.
void start()
Start the HTTP-server.
void stop(Error_CB error_cb=Error_CB{}) noexcept
Stop the server.
void run(asio_ns::io_context &ioctx, run_on_thread_pool_settings_t< Traits > &&settings)
Helper function for running http server until ctrl+c is hit.
Signal handler should be used by run() function.
break_signal_handling_t break_handling() const noexcept
on_pool_runner_t< Http_Server > m_runner
The runner of the server.
http_server_t< Traits > & server() const noexcept
impl::ioctx_on_thread_pool_t< impl::external_io_context_for_thread_pool_t > m_pool
Thread pool for running the server.