RESTinio
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
restinio Namespace Reference

Namespaces

 asio_ec
 
 async_chain
 
 connection_count_limits
 
 connection_state
 
 details
 
 easy_parser
 
 file_upload
 
 fmtlib_tools
 
 http_field_parsers
 
 impl
 
 ip_blocker
 
 multipart_body
 
 parse_query_traits
 
 path2regex
 
 router
 
 so5
 
 status_code
 
 string_algo
 
 sync_chain
 
 transforms
 
 utils
 
 websocket
 

Classes

struct  abort_app_in_error_callback_t
 Type of a function to be used as the default on_error-callback. More...
 
class  acceptor_options_t
 An adapter for setting acceptor options before running server. More...
 
class  asio_timer_manager_t
 Timer factory implementation using asio timers. More...
 
class  base_response_builder_t
 
class  basic_server_settings_t
 Basic container for http_server settings. More...
 
struct  chunk_ext_param_t
 Chunk extension parameter. More...
 
class  chunk_info_t
 Information about one chunk in an incoming request with chunked encoding. More...
 
class  chunked_input_info_t
 An information about chunks and trailing fields in the incoming request. More...
 
struct  chunked_output_t
 Tag type for chunked output response builder. More...
 
struct  connection_count_limit_types
 A kind of metafunction that deduces actual types related to connection count limiter in the dependecy of Traits. More...
 
struct  connection_state_listener_holder_t
 A special class for holding actual connection state listener. More...
 
struct  connection_state_listener_holder_t< connection_state::noop_listener_t >
 A special class for case when no-op state listener is used. More...
 
struct  const_buffer_t
 Helper class for setting a constant buffer storage explicitly. More...
 
class  default_http_methods_t
 The default implementation for http_method_mapper. More...
 
class  exception_t
 Exception class for all exceptions thrown by RESTinio. More...
 
class  extra_data_buffer_t
 Helper for holding a pointer to a buffer where a new object of type Extra_Data should be constructed. More...
 
class  file_descriptor_holder_t
 Wrapper class for working with native file handler. More...
 
class  file_meta_t
 Meta data of the file. More...
 
class  generic_request_t
 HTTP Request data. More...
 
struct  http_header_common_t
 Req/Resp headers common data. More...
 
class  http_header_field_t
 A single header field. More...
 
class  http_header_fields_t
 Header fields map. More...
 
class  http_method_id_t
 A type for representation of HTTP method ID. More...
 
struct  http_request_header_t
 Req header. More...
 
struct  http_response_header_t
 Resp header. More...
 
class  http_server_t
 Class for http-server. More...
 
class  http_status_code_t
 A handy wrapper for HTTP response status code. More...
 
class  http_status_line_t
 HTTP response header status line. More...
 
class  incoming_http_msg_limits_t
 A type of holder of limits related to an incoming HTTP message. More...
 
class  io_context_holder_t
 Helper class for holding shared pointer to io_context. More...
 
struct  ip_blocker_holder_t
 A special class for holding actual IP-blocker object. More...
 
struct  ip_blocker_holder_t< ip_blocker::noop_ip_blocker_t >
 A special class for case when no-op IP-blocker is used. More...
 
struct  no_extra_data_factory_t
 The default extra-data-factory to be used in server's traits if a user doesn't specify own one. More...
 
class  null_logger_t
 No operation logger. More...
 
struct  null_mutex_t
 A class to be used as null_mutex. More...
 
struct  null_timer_manager_t
 Timer factory implementation using asio timers. More...
 
class  on_pool_runner_t
 Helper class for running an existing HTTP-server on a thread pool without blocking the current thread. More...
 
class  ostream_logger_t
 Logger for std::ostream. More...
 
class  parse_query_failure_t
 Type that indicates a failure of an attempt of query-string parsing. More...
 
class  query_string_params_t
 Parameters container for query strings parameters. More...
 
class  response_builder_t
 Forbid arbitrary response_builder_t instantiations. More...
 
class  response_builder_t< chunked_output_t >
 Chunked transfer encoding output builder. More...
 
class  response_builder_t< restinio_controlled_output_t >
 Simple standard response builder. More...
 
class  response_builder_t< user_controlled_output_t >
 User controlled response output builder. More...
 
struct  response_output_flags_t
 Response output flags for buffers commited to response-coordinator. More...
 
struct  restinio_controlled_output_t
 Tag type for RESTinio controlled output response builder. More...
 
class  run_existing_server_on_thread_pool_t
 Helper type for holding parameters necessary for running HTTP-server on a thread pool. More...
 
class  run_on_this_thread_settings_t
 Settings for the case when http_server must be run on the context of the current thread. More...
 
class  run_on_thread_pool_settings_t
 Settings for the case when http_server must be run on the context of the current thread. More...
 
class  running_server_instance_t
 A helper class used in an implementation of run_async function. More...
 
class  sendfile_chunk_size_guarded_value_t
 A guard class for setting chunk size. More...
 
class  sendfile_t
 Send file write operation description. More...
 
class  server_settings_t
 A fluent style interface for setting http server params. More...
 
struct  simple_extra_data_factory_t
 A helper template class for cases when extra-data-factory is just a simple stateless object. More...
 
class  socket_options_t
 An adapter for setting acceptor options before running server. More...
 
class  socket_type_dependent_settings_t
 Extra settings needed for working with socket. More...
 
class  socket_type_dependent_settings_t< Settings, tls_socket_t >
 Customizes extra settings needed for working with socket. More...
 
class  tcp_connection_ctx_base_t
 TCP connection base. More...
 
struct  traits_t
 
struct  user_controlled_output_t
 Tag type for user controlled output response builder. More...
 
class  writable_item_t
 Class for storing the buffers used for streaming body (request/response). More...
 
class  write_group_t
 Group of writable items transported to the context of underlying connection as one solid piece. More...
 

Typedefs

using error_category_base_t = asio_ns::error_category
 An alias for base class of error category entity. More...
 
using default_asio_executor = asio_ns::executor
 
using fmt_minimal_memory_buffer_t = fmt::basic_memory_buffer< char, 1u >
 An alias for fmt::basic_memory_buffer<char,1>. More...
 
using writable_items_container_t = std::vector< writable_item_t >
 
using write_status_cb_t = std::function< void(const asio_ns::error_code &ec) >
 An alias for a callback to be invoked after the write operation of a particular group of "buffers". More...
 
using chunk_ext_params_t = std::vector< chunk_ext_param_t >
 
using chunk_ext_params_unique_ptr_t = std::unique_ptr< chunk_ext_params_t >
 
using chunked_input_info_unique_ptr_t = std::unique_ptr< chunked_input_info_t >
 Alias of unique_ptr for chunked_input_info. More...
 
using request_id_t = unsigned int
 Request id in scope of single connection. More...
 
template<typename T >
using nullable_pointer_t = T *
 Type for pointer that can be nullptr. More...
 
template<typename T >
using not_null_pointer_t = T *
 Type for pointer that is not null by design. More...
 
using connection_id_t = std::uint64_t
 Type for ID of connection. More...
 
using endpoint_t = asio_ns::ip::tcp::endpoint
 An alias for endpoint type from Asio. More...
 
using default_strand_t = asio_ns::strand< default_asio_executor >
 A typedef for the default strand type. More...
 
using noop_strand_t = default_asio_executor
 A typedef for no-op strand type. More...
 
template<typename T , typename E >
using expected_t = nonstd::expected< T, E >
 
using http_field = http_field_t
 Helper alies to omitt _t suffix. More...
 
using io_context_shared_ptr_t = std::shared_ptr< asio_ns::io_context >
 
template<typename Traits >
using running_server_handle_t = std::unique_ptr< running_server_instance_t< http_server_t< Traits > > >
 The type to be used as a handle for running server instance. More...
 
using single_threaded_ostream_logger_t = ostream_logger_t< null_mutex_t >
 
using shared_ostream_logger_t = ostream_logger_t< std::mutex >
 
template<typename Extra_Data >
using generic_request_handle_t = std::shared_ptr< generic_request_t< Extra_Data > >
 An alias for shared-pointer to incoming request. More...
 
using request_t = generic_request_t< no_extra_data_factory_t::data_t >
 An alias for incoming request without additional extra-data. More...
 
using request_handle_t = std::shared_ptr< request_t >
 An alias for handle for incoming request without additional extra-data. More...
 
using default_request_handler_t = std::function< request_handling_status_t(request_handle_t) >
 
using acceptor_options_setter_t = std::function< void(acceptor_options_t &) >
 
using socket_options_setter_t = std::function< void(socket_options_t &) >
 
using cleanup_functor_t = std::function< void(void) >
 Type of holder for user's cleanup function. More...
 
using acceptor_post_bind_hook_t = std::function< void(asio_ns::ip::tcp::acceptor &) >
 A type of callback to be called after a successful invocation of bind() function for the acceptor. More...
 
using string_view_t = std::string_view
 
using tcp_connection_ctx_handle_t = std::shared_ptr< tcp_connection_ctx_base_t >
 Alias for http connection handle. More...
 
using tcp_connection_ctx_weak_handle_t = std::weak_ptr< tcp_connection_ctx_base_t >
 Alias for http connection weak handle. More...
 
using timer_invocation_tag_t = std::uint32_t
 An invokation tag, for controlling no more actual timers in corner cases. More...
 
using timer_invocation_cb_t = std::add_pointer< void(timer_invocation_tag_t, tcp_connection_ctx_weak_handle_t) >::type
 A pointer to invocation callback for a specific context object. More...
 
template<typename Timer_Factory , typename Logger , typename Request_Handler = default_request_handler_t, typename Strand = asio_ns::strand< default_asio_executor >>
using tls_traits_t = traits_t< Timer_Factory, Logger, Request_Handler, Strand, tls_socket_t >
 
template<typename Timer_Factory , typename Logger , typename Request_Handler = default_request_handler_t>
using single_thread_tls_traits_t = tls_traits_t< Timer_Factory, Logger, Request_Handler, noop_strand_t >
 
using default_tls_traits_t = tls_traits_t< asio_timer_manager_t, null_logger_t >
 
using tls_socket_t = impl::tls_socket_t
 A public alias for the actual implementation of TLS-socket. More...
 
template<typename Traits >
using request_handler_type_from_traits_t = typename details::actual_request_handler_type_detector< typename Traits::request_handler_t, typename Traits::extra_data_factory_t >::request_handler_t
 A metafunction for extraction a request-handler type from server's traits. More...
 
template<typename Traits >
using generic_request_type_from_traits_t = generic_request_t< typename Traits::extra_data_factory_t::data_t >
 A metafunction for the detection of actual type of request-object from server's traits. More...
 
template<typename Timer_Manager , typename Logger , typename Request_Handler = details::autodetect_request_handler_type>
using single_thread_traits_t = traits_t< Timer_Manager, Logger, Request_Handler, noop_strand_t >
 
using default_traits_t = traits_t< asio_timer_manager_t, null_logger_t >
 
using default_single_thread_traits_t = single_thread_traits_t< asio_timer_manager_t, null_logger_t >
 Default traits for single-threaded HTTP-server. More...
 
Aliases for sendfile operation.
using file_descriptor_t = std::FILE *
 
using file_offset_t = std::int64_t
 
using file_size_t = std::uint64_t
 

Enumerations

enum  asio_convertible_error_t : int { asio_convertible_error_t::write_was_not_executed = 100, asio_convertible_error_t::write_group_destroyed_passively, asio_convertible_error_t::async_write_call_failed, asio_convertible_error_t::async_read_some_at_call_failed }
 Enum for restinio errors that must presented as asio_ns::error_code value. More...
 
enum  writable_item_type_t { writable_item_type_t::trivial_write_operation, writable_item_type_t::file_write_operation }
 Buffers write operation type. More...
 
enum  request_handling_status_t : std::uint8_t { request_handling_status_t::accepted, request_handling_status_t::rejected, request_handling_status_t::not_handled }
 Request handling status. More...
 
enum  response_parts_attr_t : std::uint8_t { response_parts_attr_t::not_final_parts, response_parts_attr_t::final_parts }
 Attribute for parts. More...
 
enum  response_connection_attr_t : std::uint8_t { response_connection_attr_t::connection_keepalive, response_connection_attr_t::connection_close }
 Attribute for parts. More...
 
enum  http_field_t : std::uint8_t { http_field_t::RESTINIO_HTTP_FIELD_GEN, http_field_t::field_unspecified }
 C++ enum that repeats nodejs c-style enum. More...
 
enum  break_signal_handling_t { break_signal_handling_t::used, break_signal_handling_t::skipped }
 Indication of usage of break signal handlers for some forms of run functions. More...
 

Functions

const error_category_base_trestinio_err_category ()
 Get restinio error category. More...
 
asio_ns::error_code make_asio_compaible_error (asio_convertible_error_t err) noexcept
 Make restinio error_code compatible with asio_ns::error_code. More...
 
template<typename Value_Type >
Value_Type cast_to (string_view_t str_representation)
 Cast string representation to a given type. More...
 
std::ostream & operator<< (std::ostream &o, response_parts_attr_t attr)
 
std::ostream & operator<< (std::ostream &o, response_connection_attr_t attr)
 
response_connection_attr_t response_connection_attr (bool should_keep_alive)
 
std::ostream & operator<< (std::ostream &o, const response_output_flags_t &flags)
 
io_context_holder_t own_io_context ()
 Function which tells that http_server should create and use its own instance of io_context. More...
 
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 controll its lifetime. More...
 
constexpr break_signal_handling_t use_break_signal_handling () noexcept
 Make the indicator for usage of break signal handler. More...
 
constexpr break_signal_handling_t skip_break_signal_handling () noexcept
 Make the indicator for absence of break signal handler. More...
 
template<typename Traits = default_single_thread_traits_t>
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. More...
 
template<typename Traits = default_traits_t>
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. More...
 
template<typename Traits >
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. More...
 
template<typename Traits >
void run (run_on_this_thread_settings_t< Traits > &&settings)
 Helper function for running http server until ctrl+c is hit. More...
 
template<typename Traits >
void run (run_on_thread_pool_settings_t< Traits > &&settings)
 Helper function for running http server until ctrl+c is hit. More...
 
template<typename Traits >
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. More...
 
template<typename Traits >
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. More...
 
template<typename Traits >
void run (run_existing_server_on_thread_pool_t< Traits > &&params)
 Helper function for running an existing HTTP-server on a thread pool. More...
 
template<typename Traits >
void initiate_shutdown (http_server_t< Traits > &server)
 Helper function for initiation of server shutdown. More...
 
template<typename Traits = default_traits_t>
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. More...
 
std::string make_date_field_value (std::time_t t)
 Format a timepoint to a string of a propper format. More...
 
std::string make_date_field_value (std::chrono::system_clock::time_point tp)
 
std::tm make_gmtime (std::time_t t)
 
std::tm make_localtime (std::time_t t)
 
template<typename Extra_Data >
std::ostream & operator<< (std::ostream &o, const generic_request_t< Extra_Data > &req)
 
template<typename Value_Type >
Value_Type get (const router::route_params_t &params, string_view_t key)
 Cast named parameter value to a given type. More...
 
template<typename Value_Type >
Value_Type get (const router::route_params_t &params, std::size_t index)
 Cast indexed parameter value to a given type. More...
 
template<typename Object >
auto create_default_unique_object_instance ()
 Default instantiation for a specific type. More...
 
template<>
auto create_default_unique_object_instance< default_request_handler_t > ()
 Default instantiation for default_request_handler_t. More...
 
template<typename Object >
auto create_default_shared_object_instance ()
 Default instantiation for a specific type. More...
 
template<>
auto create_default_shared_object_instance< default_request_handler_t > ()
 Default instantiation for default_request_handler_t. More...
 
template<typename Object >
auto ensure_created (std::unique_ptr< Object > mb_created_one, string_view_t fail_description)
 Ensure that object was created. More...
 
template<typename Object >
auto ensure_created (std::shared_ptr< Object > mb_created_one, string_view_t fail_description)
 Ensure that object was created. More...
 
template<>
auto create_default_unique_object_instance< acceptor_options_setter_t > ()
 
template<>
auto create_default_unique_object_instance< socket_options_setter_t > ()
 
template<typename Traits , typename Configurator >
auto exec_configurator (Configurator &&configurator)
 
template<typename Connection , typename Start_Read_CB , typename Failed_CB >
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 reading. More...
 
template<typename Value_Type >
Value_Type get (const query_string_params_t &params, string_view_t key)
 Cast query string parameter to a given type. More...
 
template<typename Parse_Traits >
expected_t< query_string_params_t, parse_query_failure_ttry_parse_query (string_view_t original_query_string)
 Helper function for parsing query string. More...
 
template<typename Parse_Traits = parse_query_traits::restinio_defaults>
query_string_params_t parse_query (string_view_t original_query_string)
 Parse query key-value parts. More...
 
template<typename Value_Type , typename Parameter_Container >
std::enable_if< std::is_same< Parameter_Container, query_string_params_t >::value||std::is_same< Parameter_Container, router::route_params_t >::value, Value_Type >::type value_or (const Parameter_Container &params, string_view_t key, Value_Type default_value)
 Get parameter value or a given default. More...
 
template<typename Value_Type , typename Parameter_Container >
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 &params, string_view_t key)
 Gets the value of a parameter specified by key wrapped in std::optional<Value_Type> if parameter exists and empty std::optional<Value_Type> if parameter with a given key value doesn't exist. More...
 
Adoptation functions to cover differences between snad-alone and beast asio.
bool error_is_operation_aborted (const asio_ns::error_code &ec) noexcept
 
bool error_is_eof (const asio_ns::error_code &ec) noexcept
 
Create const buffers.
constexpr const_buffer_t const_buffer (const void *str, std::size_t size) noexcept
 
const_buffer_t const_buffer (const char *str) noexcept
 
Helper funcs for working with request_handling_status_t
constexpr request_handling_status_t request_accepted () noexcept
 
constexpr request_handling_status_t request_rejected () noexcept
 
constexpr request_handling_status_t request_not_handled () noexcept
 
RFC 2616 statuses.
http_status_line_t status_continue ()
 
http_status_line_t status_switching_protocols ()
 
http_status_line_t status_ok ()
 
http_status_line_t status_created ()
 
http_status_line_t status_accepted ()
 
http_status_line_t status_non_authoritative_information ()
 
http_status_line_t status_no_content ()
 
http_status_line_t status_reset_content ()
 
http_status_line_t status_partial_content ()
 
http_status_line_t status_multiple_choices ()
 
http_status_line_t status_moved_permanently ()
 
http_status_line_t status_found ()
 
http_status_line_t status_see_other ()
 
http_status_line_t status_not_modified ()
 
http_status_line_t status_use_proxy ()
 
http_status_line_t status_temporary_redirect ()
 
http_status_line_t status_bad_request ()
 
http_status_line_t status_unauthorized ()
 
http_status_line_t status_payment_required ()
 
http_status_line_t status_forbidden ()
 
http_status_line_t status_not_found ()
 
http_status_line_t status_method_not_allowed ()
 
http_status_line_t status_not_acceptable ()
 
http_status_line_t status_proxy_authentication_required ()
 
http_status_line_t status_request_time_out ()
 
http_status_line_t status_conflict ()
 
http_status_line_t status_gone ()
 
http_status_line_t status_length_required ()
 
http_status_line_t status_precondition_failed ()
 
http_status_line_t status_payload_too_large ()
 
http_status_line_t status_uri_too_long ()
 
http_status_line_t status_unsupported_media_type ()
 
http_status_line_t status_requested_range_not_satisfiable ()
 
http_status_line_t status_expectation_failed ()
 
http_status_line_t status_internal_server_error ()
 
http_status_line_t status_not_implemented ()
 
http_status_line_t status_bad_gateway ()
 
http_status_line_t status_service_unavailable ()
 
http_status_line_t status_gateway_time_out ()
 
http_status_line_t status_http_version_not_supported ()
 
Additional statuses.

Not covered with RFC 2616.

http_status_line_t status_permanent_redirect ()
 
http_status_line_t status_processing ()
 
http_status_line_t status_multi_status ()
 
http_status_line_t status_unprocessable_entity ()
 
http_status_line_t status_locked ()
 
http_status_line_t status_failed_dependency ()
 
http_status_line_t status_insufficient_storage ()
 
http_status_line_t status_precondition_required ()
 
http_status_line_t status_too_many_requests ()
 
http_status_line_t status_request_header_fields_too_large ()
 
http_status_line_t status_network_authentication_required ()
 
Functions for creating sendfile_t objects.

A group of function to create sendfile_t, that is convertad to writable items used as a part of response.

Since
v.0.4.3
sendfile_t sendfile (file_descriptor_holder_t fd, file_meta_t meta, file_size_t chunk_size=sendfile_default_chunk_size) noexcept
 
sendfile_t sendfile (const char *file_path, file_size_t chunk_size=sendfile_default_chunk_size)
 
sendfile_t sendfile (const std::string &file_path, file_size_t chunk_size=sendfile_default_chunk_size)
 
sendfile_t sendfile (string_view_t file_path, file_size_t chunk_size=sendfile_default_chunk_size)
 
sendfile_t sendfile (const std::filesystem::path &file_path, file_size_t chunk_size=sendfile_default_chunk_size)
 
File operations.

A minimal set of file operations.

Incapsulates details of native API for a set of file operations neccessary for sendfile_t class implementation.

constexpr file_descriptor_t null_file_descriptor ()
 Get file descriptor which stands for null. More...
 
file_descriptor_t open_file (const char *file_path)
 Open file. More...
 
file_descriptor_t open_file (const std::filesystem::path &file_path)
 Helper function that accepts std::filesystem::path. More...
 
template<typename META >
META get_file_meta (file_descriptor_t fd)
 Get file size. More...
 
void close_file (file_descriptor_t fd)
 Close file by its descriptor. More...
 

Variables

constexpr file_size_t sendfile_default_chunk_size = 1024 * 1024
 Default chunk size for sendfile operation. More...
 
constexpr file_size_t sendfile_max_chunk_size = 1024 * 1024 * 1024
 Maximum size of a chunk. More...
 
enum  http_connection_header_t : std::uint8_t { http_connection_header_t::keep_alive, http_connection_header_t::close, http_connection_header_t::upgrade }
 Values for conection header field. More...
 
http_field_t string_to_field (string_view_t field) noexcept
 Helper function to get method string name. More...
 
const char * field_to_string (http_field_t f) noexcept
 Helper sunction to get method string name. More...
 
std::ostream & operator<< (std::ostream &to, const http_method_id_t &m)
 
constexpr http_method_id_t http_method_unknown ()
 
template<typename CharT , typename Traits >
std::basic_ostream< CharT, Traits > & operator<< (std::basic_ostream< CharT, Traits > &to, const http_status_code_t &status_code)
 Helper for printing status_code to ostream. More...
 
std::ostream & operator<< (std::ostream &o, const http_status_line_t &status_line)
 

Detailed Description

sendfile routine.

Timer factory implementation using asio timers.

Restinio buffers.

Cast.

Restinio common types.

Exception class for all exceptions thrown by RESTinio.

Adoption for std::expected (c++20).

Since
v.0.6.1

helpers for http communication.

HTTP-Server.

HTTP-Acceptor handler routine.

HTTP-connection routine.

A base class for connection handle.

Connection settings.

Execution mixin.

Fixed size buffer.

HTTP-Connection handler routine.

Coordinator for process od sending responses with respect to http pipeline technique and chunk transfer.

Socket adapter for asio::ssl::stream< asio::ip::tcp::socket >.

Helper output context for writing buffers to output stream (socket).

Builders for messages.

Ready to use loggers implementations.

No-op timer factory implementation.

OS specific functions.

Ready to use logger implementation for using with std::ostream.

Utility for converting express.js style routes to regexp.

Code adopted from https://github.com/pillarjs/path-to-regexp.

HTTP-request handlers routine.

Regex engine for using std::regex.

Express.js style router.

Sendfile routine.

Since
v.0.4.3

Sendfile routine definitions (default implementation via <cstdio>).

Since
v.0.4.3

Sendfile routine definitions (posix implementation).

Since
v.0.4.3

HTTP-Server configuration.

Timers implementation with sobjectizer timers.

Adoption for std::string_view (c++17).

A base class for all classes that deal with connection context.

Support for https.

HTTP server traits.

Transformator of data streams using zlib.

Since
v.0.4.4

escape functions.

Base64 implementation.

Convert strings to numeric types.

Helpers for extraction group of bits from numbers.

Percent encoding routine.

SHA1 implementation.

Helper functions for parameter extraction with default values.

Since
v.0.4.4

UTF-8 .

WebSocket connection routine.

Websocket.

Protocol header validator.

WebSocket messgage handler definition.

Typedef Documentation

◆ acceptor_options_setter_t

using restinio::acceptor_options_setter_t = typedef std::function< void ( acceptor_options_t & ) >

Definition at line 225 of file settings.hpp.

◆ acceptor_post_bind_hook_t

using restinio::acceptor_post_bind_hook_t = typedef std::function< void(asio_ns::ip::tcp::acceptor &) >

A type of callback to be called after a successful invocation of bind() function for the acceptor.

Since
v.0.6.11

Definition at line 434 of file settings.hpp.

◆ chunk_ext_params_t

using restinio::chunk_ext_params_t = typedef std::vector< chunk_ext_param_t >

Definition at line 39 of file chunked_input_info.hpp.

◆ chunk_ext_params_unique_ptr_t

using restinio::chunk_ext_params_unique_ptr_t = typedef std::unique_ptr< chunk_ext_params_t >

Definition at line 40 of file chunked_input_info.hpp.

◆ chunked_input_info_unique_ptr_t

Alias of unique_ptr for chunked_input_info.

Since
v.0.6.9

Definition at line 308 of file chunked_input_info.hpp.

◆ cleanup_functor_t

using restinio::cleanup_functor_t = typedef std::function< void(void) >

Type of holder for user's cleanup function.

Definition at line 307 of file settings.hpp.

◆ connection_id_t

using restinio::connection_id_t = typedef std::uint64_t

Type for ID of connection.

Definition at line 174 of file common_types.hpp.

◆ default_asio_executor

using restinio::default_asio_executor = typedef asio_ns::executor

Definition at line 224 of file asio_include.hpp.

◆ default_request_handler_t

Definition at line 479 of file request_handler.hpp.

◆ default_single_thread_traits_t

Default traits for single-threaded HTTP-server.

Uses default timer manager. And null logger.

Usage example:

struct my_traits : public restinio::default_single_thread_traits_t {
using logger_t = my_special_single_threaded_logger_type;
};
Since
v.0.4.0

Definition at line 432 of file traits.hpp.

◆ default_strand_t

using restinio::default_strand_t = typedef asio_ns::strand< default_asio_executor >

A typedef for the default strand type.

Since
v.0.6.12

Definition at line 23 of file default_strands.hpp.

◆ default_tls_traits_t

Definition at line 152 of file tls.hpp.

◆ default_traits_t

Definition at line 413 of file traits.hpp.

◆ endpoint_t

using restinio::endpoint_t = typedef asio_ns::ip::tcp::endpoint

An alias for endpoint type from Asio.

Definition at line 177 of file common_types.hpp.

◆ error_category_base_t

using restinio::error_category_base_t = typedef asio_ns::error_category

An alias for base class of error category entity.

Definition at line 47 of file asio_include.hpp.

◆ expected_t

template<typename T , typename E >
using restinio::expected_t = typedef nonstd::expected<T, E>

Definition at line 18 of file expected.hpp.

◆ file_descriptor_t

Definition at line 26 of file sendfile_defs_default.hpp.

◆ file_offset_t

typedef std::int64_t restinio::file_offset_t

Definition at line 27 of file sendfile_defs_default.hpp.

◆ file_size_t

typedef std::uint64_t restinio::file_size_t

Definition at line 28 of file sendfile_defs_default.hpp.

◆ fmt_minimal_memory_buffer_t

using restinio::fmt_minimal_memory_buffer_t = typedef fmt::basic_memory_buffer<char, 1u>

An alias for fmt::basic_memory_buffer<char,1>.

Since
v.0.6.3

Definition at line 40 of file buffers.hpp.

◆ generic_request_handle_t

template<typename Extra_Data >
using restinio::generic_request_handle_t = typedef std::shared_ptr< generic_request_t< Extra_Data > >

An alias for shared-pointer to incoming request.

Definition at line 456 of file request_handler.hpp.

◆ generic_request_type_from_traits_t

template<typename Traits >
using restinio::generic_request_type_from_traits_t = typedef generic_request_t< typename Traits::extra_data_factory_t::data_t >

A metafunction for the detection of actual type of request-object from server's traits.

The actual type of request-object depends from extra-data-factory. This metafunction detect the actual type with the respect to the definition of extra_data_factory_t inside Traits.

Since
v.0.6.13

Definition at line 396 of file traits.hpp.

◆ http_field

Helper alies to omitt _t suffix.

Definition at line 243 of file http_headers.hpp.

◆ io_context_shared_ptr_t

using restinio::io_context_shared_ptr_t = typedef std::shared_ptr< asio_ns::io_context >

Definition at line 25 of file http_server.hpp.

◆ noop_strand_t

A typedef for no-op strand type.

Definition at line 28 of file default_strands.hpp.

◆ not_null_pointer_t

template<typename T >
using restinio::not_null_pointer_t = typedef T*

Type for pointer that is not null by design.

Note
There is no any compile-time or run-time checks for a value of the pointer. It is just a flag that we don't expect a nullptr here by design.
Since
v.0.4.9

Definition at line 169 of file common_types.hpp.

◆ nullable_pointer_t

template<typename T >
using restinio::nullable_pointer_t = typedef T*

Type for pointer that can be nullptr.

This type is used in methods which return raw pointers. It indicates that returned value should be checked for nullptr.

Since
v.0.4.9

Definition at line 154 of file common_types.hpp.

◆ request_handle_t

using restinio::request_handle_t = typedef std::shared_ptr< request_t >

An alias for handle for incoming request without additional extra-data.

For compatibility with previous versions.

Since
v.0.6.13

Definition at line 472 of file request_handler.hpp.

◆ request_handler_type_from_traits_t

template<typename Traits >
using restinio::request_handler_type_from_traits_t = typedef typename details::actual_request_handler_type_detector< typename Traits::request_handler_t, typename Traits::extra_data_factory_t >::request_handler_t

A metafunction for extraction a request-handler type from server's traits.

This metafunction is necessary because request_handler_t in Traits can be an alias for details::autodetect_request_handler_type. Because of that details::actual_request_handler_type_detector metafunction is invoked for the detection of request-handler type.

Since
v.0.6.13

Definition at line 379 of file traits.hpp.

◆ request_id_t

using restinio::request_id_t = typedef unsigned int

Request id in scope of single connection.

Definition at line 70 of file common_types.hpp.

◆ request_t

An alias for incoming request without additional extra-data.

For compatibility with previous versions.

Since
v.0.6.13

Definition at line 464 of file request_handler.hpp.

◆ running_server_handle_t

template<typename Traits >
using restinio::running_server_handle_t = typedef std::unique_ptr< running_server_instance_t< http_server_t<Traits> > >

The type to be used as a handle for running server instance.

The handle should be seen as a Moveable and not Copyable type.

Since
v.0.6.7

Definition at line 1010 of file http_server_run.hpp.

◆ shared_ostream_logger_t

using restinio::shared_ostream_logger_t = typedef ostream_logger_t< std::mutex >

◆ single_thread_tls_traits_t

template<typename Timer_Factory , typename Logger , typename Request_Handler = default_request_handler_t>
using restinio::single_thread_tls_traits_t = typedef tls_traits_t< Timer_Factory, Logger, Request_Handler, noop_strand_t >

Definition at line 150 of file tls.hpp.

◆ single_thread_traits_t

template<typename Timer_Manager , typename Logger , typename Request_Handler = details::autodetect_request_handler_type>
using restinio::single_thread_traits_t = typedef traits_t< Timer_Manager, Logger, Request_Handler, noop_strand_t >

Definition at line 407 of file traits.hpp.

◆ single_threaded_ostream_logger_t

◆ socket_options_setter_t

using restinio::socket_options_setter_t = typedef std::function< void ( socket_options_t & ) >

Definition at line 292 of file settings.hpp.

◆ string_view_t

using restinio::string_view_t = typedef std::string_view
Examples:
sample/try_parse_query_string/main.cpp.

Definition at line 15 of file string_view.hpp.

◆ tcp_connection_ctx_handle_t

Alias for http connection handle.

Definition at line 62 of file tcp_connection_ctx_base.hpp.

◆ tcp_connection_ctx_weak_handle_t

Alias for http connection weak handle.

Definition at line 65 of file tcp_connection_ctx_base.hpp.

◆ timer_invocation_cb_t

using restinio::timer_invocation_cb_t = typedef std::add_pointer< void ( timer_invocation_tag_t , tcp_connection_ctx_weak_handle_t ) >::type

A pointer to invocation callback for a specific context object.

Definition at line 25 of file timer_common.hpp.

◆ timer_invocation_tag_t

using restinio::timer_invocation_tag_t = typedef std::uint32_t

An invokation tag, for controlling no more actual timers in corner cases.

Definition at line 20 of file timer_common.hpp.

◆ tls_socket_t

A public alias for the actual implementation of TLS-socket.

Definition at line 30 of file tls_fwd.hpp.

◆ tls_traits_t

template<typename Timer_Factory , typename Logger , typename Request_Handler = default_request_handler_t, typename Strand = asio_ns::strand< default_asio_executor >>
using restinio::tls_traits_t = typedef traits_t< Timer_Factory, Logger, Request_Handler, Strand, tls_socket_t >

Definition at line 139 of file tls.hpp.

◆ writable_items_container_t

using restinio::writable_items_container_t = typedef std::vector< writable_item_t >

Definition at line 703 of file buffers.hpp.

◆ write_status_cb_t

using restinio::write_status_cb_t = typedef std::function< void( const asio_ns::error_code & ec ) >

An alias for a callback to be invoked after the write operation of a particular group of "buffers".

Since
v.0.4.8

Definition at line 715 of file buffers.hpp.

Enumeration Type Documentation

◆ asio_convertible_error_t

Enum for restinio errors that must presented as asio_ns::error_code value.

Enumerator
write_was_not_executed 

After write notificator error: data was not sent, connection closed (or aborted) before a given piece of data.

write_group_destroyed_passively 

After write notificator error: a notificator was set for a write_group_t but no external invokation happened, so write_group_t destructor calls it with error.

async_write_call_failed 

A call to async_write failed. The corresponding write operation wasn't done.

Since
v.0.6.0
async_read_some_at_call_failed 

A call to async_read_some_at failed. The corresponding sendfile operation wasn't done.

Since
v.0.6.0

Definition at line 121 of file asio_include.hpp.

◆ break_signal_handling_t

Indication of usage of break signal handlers for some forms of run functions.

Since
v.0.5.1
Enumerator
used 

Signal handler should be used by run() function.

skipped 

Signal handler should not be used by run() function.

Definition at line 28 of file http_server_run.hpp.

◆ http_connection_header_t

enum restinio::http_connection_header_t : std::uint8_t
strong

Values for conection header field.

Enumerator
keep_alive 
close 
upgrade 

Definition at line 1568 of file http_headers.hpp.

◆ http_field_t

enum restinio::http_field_t : std::uint8_t
strong

C++ enum that repeats nodejs c-style enum.

Note
Fields Connection and Content-Length are specieal cases, thus they are not present in the list.
Enumerator
RESTINIO_HTTP_FIELD_GEN 
field_unspecified 

Definition at line 233 of file http_headers.hpp.

◆ request_handling_status_t

enum restinio::request_handling_status_t : std::uint8_t
strong

Request handling status.

If handler handles request it must return accepted.

If handler refuses to handle request it must return rejected.

Enumerator
accepted 

Request accepted for handling.

rejected 

Request wasn't accepted for handling.

not_handled 

The request wasn't handled. If there is another handler to be tried it should be tried. Otherwise the request has to be rejected.

Since
v.0.6.13.

Definition at line 25 of file common_types.hpp.

◆ response_connection_attr_t

enum restinio::response_connection_attr_t : std::uint8_t
strong

Attribute for parts.

Enumerator
connection_keepalive 

This response says to keep connection.

connection_close 

This response says to close connection.

Definition at line 93 of file common_types.hpp.

◆ response_parts_attr_t

enum restinio::response_parts_attr_t : std::uint8_t
strong

Attribute for parts.

Enumerator
not_final_parts 

Intermediate parts (more parts of response to follow).

final_parts 

Final parts (response ands with these parts).

Definition at line 73 of file common_types.hpp.

◆ writable_item_type_t

Buffers write operation type.

Enumerator
trivial_write_operation 

Item is a buffer and must be written trivially.

file_write_operation 

Item is a sendfile operation and implicates file write operation.

Definition at line 442 of file buffers.hpp.

Function Documentation

◆ cast_to()

template<typename Value_Type >
Value_Type restinio::cast_to ( string_view_t  str_representation)

Cast string representation to a given type.

Definition at line 27 of file cast_to.hpp.

◆ close_file()

void restinio::close_file ( file_descriptor_t  fd)
inline

Close file by its descriptor.

Definition at line 152 of file sendfile_defs_default.hpp.

◆ const_buffer() [1/2]

constexpr const_buffer_t restinio::const_buffer ( const void *  str,
std::size_t  size 
)
inlinenoexcept

Definition at line 425 of file buffers.hpp.

◆ const_buffer() [2/2]

const_buffer_t restinio::const_buffer ( const char *  str)
inlinenoexcept

Definition at line 431 of file buffers.hpp.

◆ create_default_shared_object_instance()

template<typename Object >
auto restinio::create_default_shared_object_instance ( )
inline

Default instantiation for a specific type.

Definition at line 91 of file settings.hpp.

◆ create_default_shared_object_instance< default_request_handler_t >()

Default instantiation for default_request_handler_t.

Definition at line 100 of file settings.hpp.

◆ create_default_unique_object_instance()

template<typename Object >
auto restinio::create_default_unique_object_instance ( )
inline

Default instantiation for a specific type.

Definition at line 69 of file settings.hpp.

◆ create_default_unique_object_instance< acceptor_options_setter_t >()

Definition at line 229 of file settings.hpp.

◆ create_default_unique_object_instance< default_request_handler_t >()

Default instantiation for default_request_handler_t.

Definition at line 78 of file settings.hpp.

◆ create_default_unique_object_instance< socket_options_setter_t >()

Definition at line 296 of file settings.hpp.

◆ ensure_created() [1/2]

template<typename Object >
auto restinio::ensure_created ( std::unique_ptr< Object >  mb_created_one,
string_view_t  fail_description 
)

Ensure that object was created.

Definition at line 113 of file settings.hpp.

◆ ensure_created() [2/2]

template<typename Object >
auto restinio::ensure_created ( std::shared_ptr< Object >  mb_created_one,
string_view_t  fail_description 
)

Ensure that object was created.

Definition at line 133 of file settings.hpp.

◆ error_is_eof()

bool restinio::error_is_eof ( const asio_ns::error_code &  ec)
inlinenoexcept

Definition at line 33 of file asio_include.hpp.

◆ error_is_operation_aborted()

bool restinio::error_is_operation_aborted ( const asio_ns::error_code &  ec)
inlinenoexcept

Definition at line 27 of file asio_include.hpp.

◆ exec_configurator()

template<typename Traits , typename Configurator >
auto restinio::exec_configurator ( Configurator &&  configurator)

Definition at line 1815 of file settings.hpp.

◆ external_io_context()

io_context_holder_t restinio::external_io_context ( asio_ns::io_context &  ctx)
inline

Function which tells that http_server should use external instance of io_context and should not controll its lifetime.

Usage example:

asio::io_context ctx;
...
restinio::http_server_t<> server(
Examples:
sample/using_external_io_context/main.cpp.

Definition at line 87 of file http_server.hpp.

◆ field_to_string()

const char* restinio::field_to_string ( http_field_t  f)
inlinenoexcept

Helper sunction to get method string name.

Definition at line 554 of file http_headers.hpp.

◆ get() [1/3]

template<typename Value_Type >
Value_Type restinio::get ( const query_string_params_t params,
string_view_t  key 
)

Cast query string parameter to a given type.

Definition at line 175 of file uri_helpers.hpp.

◆ get() [2/3]

template<typename Value_Type >
Value_Type restinio::get ( const router::route_params_t params,
string_view_t  key 
)

Cast named parameter value to a given type.

Definition at line 853 of file express.hpp.

◆ get() [3/3]

template<typename Value_Type >
Value_Type restinio::get ( const router::route_params_t params,
std::size_t  index 
)

Cast indexed parameter value to a given type.

Definition at line 861 of file express.hpp.

◆ get_file_meta()

template<typename META >
META restinio::get_file_meta ( file_descriptor_t  fd)

Get file size.

Get file meta.

Definition at line 118 of file sendfile_defs_default.hpp.

◆ http_method_unknown()

constexpr http_method_id_t restinio::http_method_unknown ( )
inline

Definition at line 1810 of file http_headers.hpp.

◆ initiate_shutdown()

template<typename Traits >
void restinio::initiate_shutdown ( http_server_t< Traits > &  server)
inline

Helper function for initiation of server shutdown.

Can be useful if an existing HTTP-server is run via run() function. For example:

// Launch another thread that will perform some application logic.
std::thread app_logic_thread{ [&server] {
while(some_condition) {
...
if(exit_case) {
// HTTP-server should be shut down.
// Our work should be finished.
return;
}
}
} };
// Start HTTP-server. The current thread will be blocked until
// run() returns.
4,
server) );
// Now app_logic_thread can be joined.
app_logic_thread.join();
Since
v.0.5.1

Definition at line 681 of file http_server_run.hpp.

◆ make_asio_compaible_error()

asio_ns::error_code restinio::make_asio_compaible_error ( asio_convertible_error_t  err)
inlinenoexcept

Make restinio error_code compatible with asio_ns::error_code.

Definition at line 210 of file asio_include.hpp.

◆ make_date_field_value() [1/2]

std::string restinio::make_date_field_value ( std::time_t  t)
inline

Format a timepoint to a string of a propper format.

Examples:
sample/sendfiles/main.cpp.

Definition at line 33 of file message_builders.hpp.

◆ make_date_field_value() [2/2]

std::string restinio::make_date_field_value ( std::chrono::system_clock::time_point  tp)
inline

Definition at line 49 of file message_builders.hpp.

◆ make_gmtime()

std::tm restinio::make_gmtime ( std::time_t  t)
inline

Definition at line 3 of file os.hpp.

◆ make_localtime()

std::tm restinio::make_localtime ( std::time_t  t)
inline

Definition at line 11 of file os.hpp.

◆ null_file_descriptor()

constexpr file_descriptor_t restinio::null_file_descriptor ( )

Get file descriptor which stands for null.

Definition at line 42 of file sendfile_defs_default.hpp.

◆ on_this_thread()

template<typename Traits = default_single_thread_traits_t>
run_on_this_thread_settings_t<Traits> restinio::on_this_thread ( )

A special marker for the case when http_server must be run on the context of the current thread.

Usage example:

// Run with the default traits.
.port(8080)
.address("localhost")
.request_handler(...) );

For a case when some custom traits must be used:

run( restinio::on_this_thread<my_server_traits_t>()
.port(8080)
.address("localhost")
.request_handler(...) );

Definition at line 123 of file http_server_run.hpp.

◆ on_thread_pool() [1/2]

template<typename Traits = default_traits_t>
run_on_thread_pool_settings_t<Traits> restinio::on_thread_pool ( std::size_t  pool_size)

A special marker for the case when http_server must be run on an thread pool.

Usage example:

// Run with the default traits.
run( restinio::on_thread_pool(16) // 16 -- is the pool size.
.port(8080)
.address("localhost")
.request_handler(...) );

For a case when some custom traits must be used:

run( restinio::on_thread_pool<my_server_traits_t>(16)
.port(8080)
.address("localhost")
.request_handler(...) );
Parameters
pool_sizeSize of the pool.
Examples:
sample/hello_world_basic/main.cpp, sample/hello_world_delayed/main.cpp, sample/query_string_params/main.cpp, and sample/try_parse_query_string/main.cpp.

Definition at line 183 of file http_server_run.hpp.

◆ on_thread_pool() [2/2]

template<typename Traits >
run_existing_server_on_thread_pool_t<Traits> restinio::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.

Usage example:

my_server_t server{
[](auto & settings) {
settings.port(...);
settings.address(...);
settings.request_handler(...);
...
}
};
...
restinio::run( restinio::on_thread_pool(
std::thread::hardware_concurrency(),
server) );
Since
v.0.5.1

Definition at line 494 of file http_server_run.hpp.

◆ open_file() [1/2]

file_descriptor_t restinio::open_file ( const char *  file_path)
inline

Open file.

Definition at line 48 of file sendfile_defs_default.hpp.

◆ open_file() [2/2]

file_descriptor_t restinio::open_file ( const std::filesystem::path &  file_path)
inline

Helper function that accepts std::filesystem::path.

Since
v.0.7.1

Just delegates all real work to open_file(const char *).

Attention
Uses std::filesystem::path::c_str() to get file name and pass it to the actual open_file implementation. It means that we assume that file systems on POSIX uses UTF-8 natively and that file_path is specified in UTF-8.
Since
v.0.7.1

Definition at line 90 of file sendfile_defs_default.hpp.

◆ operator<<() [1/7]

std::ostream& restinio::operator<< ( std::ostream &  o,
response_parts_attr_t  attr 
)
inline

Definition at line 82 of file common_types.hpp.

◆ operator<<() [2/7]

std::ostream& restinio::operator<< ( std::ostream &  o,
response_connection_attr_t  attr 
)
inline

Definition at line 102 of file common_types.hpp.

◆ operator<<() [3/7]

std::ostream& restinio::operator<< ( std::ostream &  o,
const response_output_flags_t flags 
)
inline

Definition at line 136 of file common_types.hpp.

◆ operator<<() [4/7]

template<typename Extra_Data >
std::ostream& restinio::operator<< ( std::ostream &  o,
const generic_request_t< Extra_Data > &  req 
)

Definition at line 441 of file request_handler.hpp.

◆ operator<<() [5/7]

std::ostream& restinio::operator<< ( std::ostream &  to,
const http_method_id_t m 
)
inline

Definition at line 1795 of file http_headers.hpp.

◆ operator<<() [6/7]

template<typename CharT , typename Traits >
std::basic_ostream<CharT, Traits>& restinio::operator<< ( std::basic_ostream< CharT, Traits > &  to,
const http_status_code_t status_code 
)
inline

Helper for printing status_code to ostream.

Since
v.0.7.1

Definition at line 2039 of file http_headers.hpp.

◆ operator<<() [7/7]

std::ostream& restinio::operator<< ( std::ostream &  o,
const http_status_line_t status_line 
)
inline

Definition at line 2173 of file http_headers.hpp.

◆ opt_value()

template<typename Value_Type , typename Parameter_Container >
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 restinio::opt_value ( const Parameter_Container &  params,
string_view_t  key 
)

Gets the value of a parameter specified by key wrapped in std::optional<Value_Type> if parameter exists and empty std::optional<Value_Type> if parameter with a given key value doesn't exist.

If parameter exists in params it is obtained as string_view_t object and casted to a necessary type and then is wrapped in std::optional<Value_Type>. If params has no such parameters then the empty std::optional<Value_Type> is returned.

Since
v.0.4.5.1

Definition at line 64 of file value_or.hpp.

◆ own_io_context()

io_context_holder_t restinio::own_io_context ( )
inline

Function which tells that http_server should create and use its own instance of io_context.

Usage example:

Examples:
sample/shared_tls_context/main.cpp.

Definition at line 65 of file http_server.hpp.

◆ parse_query()

template<typename Parse_Traits = parse_query_traits::restinio_defaults>
query_string_params_t restinio::parse_query ( string_view_t  original_query_string)

Parse query key-value parts.

Since v.0.4.9 this function correctly handles the following cases:

Since v.0.4.9.1 this function can be parametrized by parser traits. For example:

auto result = restinio::parse_query<restinio::parse_query_traits::javascript_compatible>("name=A*");
Parameters
original_query_stringQuery part of the request target.
Examples:
sample/express_router_tutorial/main.cpp, and sample/query_string_params/main.cpp.

Definition at line 520 of file uri_helpers.hpp.

◆ prepare_connection_and_start_read()

template<typename Connection , typename Start_Read_CB , typename Failed_CB >
void restinio::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 reading.

Definition at line 162 of file tls.hpp.

◆ request_accepted()

constexpr request_handling_status_t restinio::request_accepted ( )
noexcept

◆ request_not_handled()

constexpr request_handling_status_t restinio::request_not_handled ( )
noexcept
Since
v.0.6.13
Examples:
sample/chained_handlers/main.cpp, and sample/extra_data_factory/main.cpp.

Definition at line 63 of file common_types.hpp.

◆ request_rejected()

constexpr request_handling_status_t restinio::request_rejected ( )
noexcept

◆ response_connection_attr()

response_connection_attr_t restinio::response_connection_attr ( bool  should_keep_alive)
inline

Definition at line 113 of file common_types.hpp.

◆ restinio_err_category()

const error_category_base_t& restinio::restinio_err_category ( )
inline

Get restinio error category.

Definition at line 199 of file asio_include.hpp.

◆ run() [1/5]

template<typename Traits >
void restinio::run ( asio_ns::io_context &  ioctx,
run_on_this_thread_settings_t< Traits > &&  settings 
)
inline

Helper function for running http server until ctrl+c is hit.

Can be useful when RESTinio server should be run on the user's own io_context instance.

For example:

asio::io_context iosvc;
... // iosvc used by user.
restinio::on_this_thread<my_traits>()
.port(8080)
.address("localhost")
.request_handler([](auto req) {...}));
Since
v.0.4.2
Parameters
ioctxAsio's io_context to be used. Note: this reference should remain valid until RESTinio server finished.
settingsSettings for that server instance.
Examples:
sample/async_chained_handlers/main.cpp, sample/async_handling_with_sobjectizer/main.cpp, sample/chained_handlers/main.cpp, sample/connection_state/main.cpp, sample/express_router/main.cpp, sample/express_router_tutorial/main.cpp, sample/extra_data_factory/main.cpp, sample/file_upload/main.cpp, sample/hello_world/main.cpp, sample/hello_world_basic/main.cpp, sample/hello_world_delayed/main.cpp, sample/hello_world_https/main.cpp, sample/hello_world_minimal/main.cpp, sample/hello_world_sendfile/main.cpp, sample/hello_world_sendfile_https/main.cpp, sample/ip_blocker/main.cpp, sample/query_string_params/main.cpp, sample/sendfiles/main.cpp, sample/tls_inspector/main.cpp, sample/try_parse_query_string/main.cpp, sample/websocket/main.cpp, sample/websocket_detailed/main.cpp, and sample/websocket_wss/main.cpp.

Definition at line 216 of file http_server_run.hpp.

◆ run() [2/5]

template<typename Traits >
void restinio::run ( run_on_this_thread_settings_t< Traits > &&  settings)
inline

Helper function for running http server until ctrl+c is hit.

This function creates its own instance of Asio's io_context and uses it exclusively.

Usage example:

restinio::on_this_thread<my_traits>()
.port(8080)
.address("localhost")
.request_handler([](auto req) {...}));

Definition at line 283 of file http_server_run.hpp.

◆ run() [3/5]

template<typename Traits >
void restinio::run ( run_on_thread_pool_settings_t< Traits > &&  settings)
inline

Helper function for running http server until ctrl+c is hit.

This function creates its own instance of Asio's io_context and uses it exclusively.

Usage example:

restinio::on_thread_pool<my_traits>(4)
.port(8080)
.address("localhost")
.request_handler([](auto req) {...}));

Definition at line 370 of file http_server_run.hpp.

◆ run() [4/5]

template<typename Traits >
void restinio::run ( asio_ns::io_context &  ioctx,
run_on_thread_pool_settings_t< Traits > &&  settings 
)
inline

Helper function for running http server until ctrl+c is hit.

Can be useful when RESTinio server should be run on the user's own io_context instance.

For example:

asio::io_context iosvc;
... // iosvc used by user.
restinio::on_thread_pool<my_traits>(4)
.port(8080)
.address("localhost")
.request_handler([](auto req) {...}));
Since
v.0.4.2
Parameters
ioctxAsio's io_context to be used. Note: this reference should remain valid until RESTinio server finished.
settingsSettings for that server instance.

Definition at line 401 of file http_server_run.hpp.

◆ run() [5/5]

template<typename Traits >
void restinio::run ( run_existing_server_on_thread_pool_t< Traits > &&  params)
inline

Helper function for running an existing HTTP-server on a thread pool.

Usage example:

my_server_t server{
[](auto & settings) {
settings.port(...);
settings.address(...);
settings.request_handler(...);
...
}
};
...
// run() returns if Ctrl+C is pressed or if HTTP-server will
// be shut down from elsewhere.
restinio::run( restinio::on_thread_pool(
std::thread::hardware_concurrency(),
server) );
Since
v.0.5.1

Definition at line 632 of file http_server_run.hpp.

◆ run_async()

template<typename Traits = default_traits_t>
running_server_handle_t< Traits > restinio::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.

Usage example:

int main() {
auto server = restinio::run_async(
// Asio's io_context to be used.
// HTTP-server will use own Asio's io_context object.
// The settings for the HTTP-server.
.address("127.0.0.1")
.port(8080)
.request_handler(...),
// The size of thread-pool for the HTTP-server.
16);
// If we are here and run_async doesn't throw then HTTP-server
// is started.
... // Some other actions.
// No need to stop HTTP-server manually. It will be automatically
// stopped in the destructor of `server` object.
}

Or, if user-defined traits should be used:

int main() {
struct my_traits : public restinio::default_traits_t {
...
};
auto server = restinio::run_async<my_traits>(
.address(...)
.port(...)
.request_handler(...),
// Use just one thread for the HTTP-server.
1u);
... // Some other actions.
}

run_async() returns control when HTTP-server is started or some startup failure is detected. But if a failure is detected then an exception is thrown. So if run_async() returns successfuly then HTTP-server is working.

The started HTTP-server will be automatically stopped at the destruction of the returned value. Because of that the returned value should be stored for the time while HTTP-server is needed.

The started HTTP-server can be stopped manually by calling stop() and wait() methods:

auto server = restinio::run_async(...);
...
server->stop(); // Returns without the waiting.
... // Some other actions.
server->wait(); // Returns only when HTTP-server stopped.
Since
v.0.6.7

Definition at line 1199 of file http_server_run.hpp.

◆ sendfile() [1/5]

sendfile_t restinio::sendfile ( file_descriptor_holder_t  fd,
file_meta_t  meta,
file_size_t  chunk_size = sendfile_default_chunk_size 
)
inlinenoexcept
Parameters
fdNative file descriptor.
metaFile meta data.
chunk_sizeThe max size of a data to be send on a single iteration.
Examples:
sample/hello_world_sendfile/main.cpp, sample/hello_world_sendfile_https/main.cpp, and sample/sendfiles/main.cpp.

Definition at line 481 of file sendfile.hpp.

◆ sendfile() [2/5]

sendfile_t restinio::sendfile ( const char *  file_path,
file_size_t  chunk_size = sendfile_default_chunk_size 
)
inline
Parameters
file_pathPath to file.
chunk_sizeThe max size of a data to be send on a single iteration.

Definition at line 494 of file sendfile.hpp.

◆ sendfile() [3/5]

sendfile_t restinio::sendfile ( const std::string &  file_path,
file_size_t  chunk_size = sendfile_default_chunk_size 
)
inline
Parameters
file_pathPath to file.
chunk_sizeThe max size of a data to be send on a single iteration.

Definition at line 509 of file sendfile.hpp.

◆ sendfile() [4/5]

sendfile_t restinio::sendfile ( string_view_t  file_path,
file_size_t  chunk_size = sendfile_default_chunk_size 
)
inline
Parameters
file_pathPath to file.
chunk_sizeThe max size of a data to be send on a single iteration.

Definition at line 520 of file sendfile.hpp.

◆ sendfile() [5/5]

sendfile_t restinio::sendfile ( const std::filesystem::path &  file_path,
file_size_t  chunk_size = sendfile_default_chunk_size 
)
inline
Since
v.0.7.1
Parameters
file_pathPath to file.
chunk_sizeThe max size of a data to be send on a single iteration.

Definition at line 538 of file sendfile.hpp.

◆ skip_break_signal_handling()

constexpr break_signal_handling_t restinio::skip_break_signal_handling ( )
inlinenoexcept

Make the indicator for absence of break signal handler.

Usage example:

std::thread::hardware_concurrency(),
my_server) );
Since
v.0.5.1

Definition at line 69 of file http_server_run.hpp.

◆ status_accepted()

http_status_line_t restinio::status_accepted ( )
inline

Definition at line 2196 of file http_headers.hpp.

◆ status_bad_gateway()

http_status_line_t restinio::status_bad_gateway ( )
inline

Definition at line 2292 of file http_headers.hpp.

◆ status_bad_request()

http_status_line_t restinio::status_bad_request ( )
inline

◆ status_conflict()

http_status_line_t restinio::status_conflict ( )
inline

Definition at line 2259 of file http_headers.hpp.

◆ status_continue()

http_status_line_t restinio::status_continue ( )
inline

Definition at line 2184 of file http_headers.hpp.

◆ status_created()

http_status_line_t restinio::status_created ( )
inline

Definition at line 2193 of file http_headers.hpp.

◆ status_expectation_failed()

http_status_line_t restinio::status_expectation_failed ( )
inline

Definition at line 2283 of file http_headers.hpp.

◆ status_failed_dependency()

http_status_line_t restinio::status_failed_dependency ( )
inline

Definition at line 2326 of file http_headers.hpp.

◆ status_forbidden()

http_status_line_t restinio::status_forbidden ( )
inline
Examples:
sample/sendfiles/main.cpp.

Definition at line 2241 of file http_headers.hpp.

◆ status_found()

http_status_line_t restinio::status_found ( )
inline

Definition at line 2217 of file http_headers.hpp.

◆ status_gateway_time_out()

http_status_line_t restinio::status_gateway_time_out ( )
inline

Definition at line 2298 of file http_headers.hpp.

◆ status_gone()

http_status_line_t restinio::status_gone ( )
inline

Definition at line 2262 of file http_headers.hpp.

◆ status_http_version_not_supported()

http_status_line_t restinio::status_http_version_not_supported ( )
inline

Definition at line 2301 of file http_headers.hpp.

◆ status_insufficient_storage()

http_status_line_t restinio::status_insufficient_storage ( )
inline

Definition at line 2329 of file http_headers.hpp.

◆ status_internal_server_error()

http_status_line_t restinio::status_internal_server_error ( )
inline

Definition at line 2286 of file http_headers.hpp.

◆ status_length_required()

http_status_line_t restinio::status_length_required ( )
inline

Definition at line 2265 of file http_headers.hpp.

◆ status_locked()

http_status_line_t restinio::status_locked ( )
inline

Definition at line 2323 of file http_headers.hpp.

◆ status_method_not_allowed()

http_status_line_t restinio::status_method_not_allowed ( )
inline
Examples:
sample/express_router/main.cpp.

Definition at line 2247 of file http_headers.hpp.

◆ status_moved_permanently()

http_status_line_t restinio::status_moved_permanently ( )
inline

Definition at line 2214 of file http_headers.hpp.

◆ status_multi_status()

http_status_line_t restinio::status_multi_status ( )
inline

Definition at line 2317 of file http_headers.hpp.

◆ status_multiple_choices()

http_status_line_t restinio::status_multiple_choices ( )
inline

Definition at line 2211 of file http_headers.hpp.

◆ status_network_authentication_required()

http_status_line_t restinio::status_network_authentication_required ( )
inline

Definition at line 2342 of file http_headers.hpp.

◆ status_no_content()

http_status_line_t restinio::status_no_content ( )
inline

Definition at line 2202 of file http_headers.hpp.

◆ status_non_authoritative_information()

http_status_line_t restinio::status_non_authoritative_information ( )
inline

Definition at line 2199 of file http_headers.hpp.

◆ status_not_acceptable()

http_status_line_t restinio::status_not_acceptable ( )
inline

Definition at line 2250 of file http_headers.hpp.

◆ status_not_found()

http_status_line_t restinio::status_not_found ( )
inline

◆ status_not_implemented()

http_status_line_t restinio::status_not_implemented ( )
inline
Examples:
sample/sendfiles/main.cpp.

Definition at line 2289 of file http_headers.hpp.

◆ status_not_modified()

http_status_line_t restinio::status_not_modified ( )
inline

Definition at line 2223 of file http_headers.hpp.

◆ status_ok()

http_status_line_t restinio::status_ok ( )
inline

Definition at line 2190 of file http_headers.hpp.

◆ status_partial_content()

http_status_line_t restinio::status_partial_content ( )
inline

Definition at line 2208 of file http_headers.hpp.

◆ status_payload_too_large()

http_status_line_t restinio::status_payload_too_large ( )
inline

Definition at line 2271 of file http_headers.hpp.

◆ status_payment_required()

http_status_line_t restinio::status_payment_required ( )
inline

Definition at line 2238 of file http_headers.hpp.

◆ status_permanent_redirect()

http_status_line_t restinio::status_permanent_redirect ( )
inline

Definition at line 2310 of file http_headers.hpp.

◆ status_precondition_failed()

http_status_line_t restinio::status_precondition_failed ( )
inline

Definition at line 2268 of file http_headers.hpp.

◆ status_precondition_required()

http_status_line_t restinio::status_precondition_required ( )
inline

Definition at line 2333 of file http_headers.hpp.

◆ status_processing()

http_status_line_t restinio::status_processing ( )
inline

Definition at line 2314 of file http_headers.hpp.

◆ status_proxy_authentication_required()

http_status_line_t restinio::status_proxy_authentication_required ( )
inline

Definition at line 2253 of file http_headers.hpp.

◆ status_request_header_fields_too_large()

http_status_line_t restinio::status_request_header_fields_too_large ( )
inline

Definition at line 2339 of file http_headers.hpp.

◆ status_request_time_out()

http_status_line_t restinio::status_request_time_out ( )
inline

Definition at line 2256 of file http_headers.hpp.

◆ status_requested_range_not_satisfiable()

http_status_line_t restinio::status_requested_range_not_satisfiable ( )
inline

Definition at line 2280 of file http_headers.hpp.

◆ status_reset_content()

http_status_line_t restinio::status_reset_content ( )
inline

Definition at line 2205 of file http_headers.hpp.

◆ status_see_other()

http_status_line_t restinio::status_see_other ( )
inline

Definition at line 2220 of file http_headers.hpp.

◆ status_service_unavailable()

http_status_line_t restinio::status_service_unavailable ( )
inline

Definition at line 2295 of file http_headers.hpp.

◆ status_switching_protocols()

http_status_line_t restinio::status_switching_protocols ( )
inline

Definition at line 2187 of file http_headers.hpp.

◆ status_temporary_redirect()

http_status_line_t restinio::status_temporary_redirect ( )
inline

Definition at line 2229 of file http_headers.hpp.

◆ status_too_many_requests()

http_status_line_t restinio::status_too_many_requests ( )
inline

Definition at line 2336 of file http_headers.hpp.

◆ status_unauthorized()

http_status_line_t restinio::status_unauthorized ( )
inline

◆ status_unprocessable_entity()

http_status_line_t restinio::status_unprocessable_entity ( )
inline

Definition at line 2320 of file http_headers.hpp.

◆ status_unsupported_media_type()

http_status_line_t restinio::status_unsupported_media_type ( )
inline

Definition at line 2277 of file http_headers.hpp.

◆ status_uri_too_long()

http_status_line_t restinio::status_uri_too_long ( )
inline

Definition at line 2274 of file http_headers.hpp.

◆ status_use_proxy()

http_status_line_t restinio::status_use_proxy ( )
inline

Definition at line 2226 of file http_headers.hpp.

◆ string_to_field()

http_field_t restinio::string_to_field ( string_view_t  field)
inlinenoexcept

Helper function to get method string name.

Definition at line 252 of file http_headers.hpp.

◆ try_parse_query()

template<typename Parse_Traits >
expected_t< query_string_params_t, parse_query_failure_t > restinio::try_parse_query ( string_view_t  original_query_string)

Helper function for parsing query string.

Unlike parse_query() function the try_parse_query() doesn't throw if some unsupported character sequence is found.

Note
Parsing traits should be specified explicitly.

Usage example:

if(!result) {
std::cerr << "Unable to parse query-string: " << result.error().description() << std::endl;
}
else {
const restinio::query_string_params_t & params = *result;
...
}
Attention
This function is not noexcept and can throw on other types of failures (like unability to allocate a memory).
Since
v.0.6.5
Parameters
original_query_stringQuery part of the request target.
Examples:
sample/try_parse_query_string/main.cpp.

Definition at line 399 of file uri_helpers.hpp.

◆ use_break_signal_handling()

constexpr break_signal_handling_t restinio::use_break_signal_handling ( )
inlinenoexcept

Make the indicator for usage of break signal handler.

Usage example:

std::thread::hardware_concurrency(),
my_server) );
Since
v.0.5.1

Definition at line 50 of file http_server_run.hpp.

◆ value_or()

template<typename Value_Type , typename Parameter_Container >
std::enable_if< std::is_same< Parameter_Container, query_string_params_t >::value || std::is_same< Parameter_Container, router::route_params_t >::value, Value_Type >::type restinio::value_or ( const Parameter_Container &  params,
string_view_t  key,
Value_Type  default_value 
)

Get parameter value or a given default.

Get the value of a parameter specified by key if parameter exists. If parameter exists in params it is obtained as string_view_t object and casted to a necessary type and then returns. If params has no such parameters then the default_value is returned.

Since
v.0.4.4

Definition at line 36 of file value_or.hpp.

Variable Documentation

◆ sendfile_default_chunk_size

constexpr file_size_t restinio::sendfile_default_chunk_size = 1024 * 1024

Default chunk size for sendfile operation.

Since
v.0.4.3

Definition at line 50 of file sendfile.hpp.

◆ sendfile_max_chunk_size

constexpr file_size_t restinio::sendfile_max_chunk_size = 1024 * 1024 * 1024

Maximum size of a chunk.

Since
v.0.4.3

Definition at line 54 of file sendfile.hpp.