157template<
typename Extra_Data_Factory = no_extra_data_factory_t >
198 std::unique_ptr< growable_size_chain_t >
207 template<
typename Handler >
212 throw exception_t{
"an attempt to add a handler to "
213 "a growable-size-chain builder that already "
218 std::forward<Handler>(handler)
223 std::unique_ptr< growable_size_chain_t >
m_chain;
Exception class for all exceptions thrown by RESTinio.
A builder of an instance of growable_size_chain.
std::unique_ptr< growable_size_chain_t > m_chain
void add(Handler &&handler)
Add a new handler to the chain.
RESTINIO_NODISCARD std::unique_ptr< growable_size_chain_t > release() noexcept
Stop adding of new handlers and acquire the chain instance.
A holder of variable-size chain of synchronous handlers.
growable_size_chain_t()=delete
growable_size_chain_t(creation_token_t)
The main constructor.
std::function< request_handling_status_t(const actual_request_handle_t &) > handler_holder_t
generic_request_handle_t< typename Extra_Data_Factory::data_t > actual_request_handle_t
RESTINIO_NODISCARD request_handling_status_t operator()(const actual_request_handle_t &req) const
std::vector< handler_holder_t > m_handlers
#define RESTINIO_NODISCARD
RESTINIO_NODISCARD constexpr request_handling_status_t request_not_handled() noexcept
std::shared_ptr< generic_request_t< Extra_Data > > generic_request_handle_t
An alias for shared-pointer to incoming request.
request_handling_status_t
Request handling status.
@ accepted
Request accepted for handling.
@ not_handled
The request wasn't handled. If there is another handler to be tried it should be tried....
@ rejected
Request wasn't accepted for handling.