2
3
6
7
11#include <restinio/exception.hpp>
12#include <restinio/settings.hpp>
13#include <restinio/request_handler.hpp>
14#include <restinio/impl/acceptor.hpp>
15#include <restinio/traits.hpp>
31
32
33
34
46 return std::move(m_context);
54
55
56
57
58
59
60
61
62
63
67 return { std::make_shared< asio_ns::io_context >() };
74
75
76
77
78
79
80
81
82
83
84
85
89 return { std::shared_ptr< asio_ns::io_context >(
92 []( asio_ns::io_context * ){} )
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
182
183
184
185
201 settings.ensure_valid_connection_state_listener();
203 settings.ensure_valid_ip_blocker();
209 auto timer_factory = settings.timer_factory();
214 std::forward< actual_settings_type >(settings),
215 impl::create_parser_settings<
typename Traits::http_methods_mapper_t >(),
224 settings.socket_options_setter() ),
225 *( conn_settings->m_logger ) );
229 typename Configurator,
234 std::declval<Configurator>()(
235 std::declval<server_settings_t<Traits>&>() ) ) >
238 Configurator && configurator )
241 exec_configurator< Traits, Configurator >(
242 std::forward< Configurator >( configurator ) ) }
253 asio_ns::io_context & io_context()
noexcept {
return *m_io_context; }
257
258
259
260
261
262
263
264
266 typename Server_Open_Ok_CB,
267 typename Server_Open_Error_CB >
270 Server_Open_Ok_CB open_ok_cb,
271 Server_Open_Error_CB open_err_cb )
274 m_acceptor->get_open_close_operations_executor(),
276 ok_cb = std::move( open_ok_cb ),
277 err_cb = std::move( open_err_cb ) ]{
281 call_nothrow_cb( ok_cb );
285 call_nothrow_cb( [&err_cb] {
286 err_cb( std::current_exception() );
294
295
296
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
345 typename Server_Close_Ok_CB,
346 typename Server_Close_Error_CB >
349 Server_Close_Ok_CB close_ok_cb,
350 Server_Close_Error_CB close_err_cb )
353 m_acceptor->get_open_close_operations_executor(),
355 ok_cb = std::move( close_ok_cb ),
356 err_cb = std::move( close_err_cb ) ]{
360 call_nothrow_cb( ok_cb );
364 call_nothrow_cb( [&err_cb] {
365 err_cb( std::current_exception() );
373
374
375
413
414
415
416
417
418
419
423 if( m_cleanup_functor )
431 template<
typename Callback >
Basic container for http_server settings.
impl::connection_factory_t< Traits > connection_factory_t
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.
impl::connection_settings_t< Traits > connection_settings_t
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.
impl::acceptor_t< Traits > acceptor_t
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)
running_state_t m_running_state
Server state.
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.
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)
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.
io_context_holder_t own_io_context()
Function which tells that http_server should create and use its own instance of io_context.
std::shared_ptr< asio_ns::io_context > io_context_shared_ptr_t
request_handler_type_from_traits_t< Traits > request_handler_t