RESTinio
Public Types | Static Public Attributes | List of all members
restinio::traits_t< Timer_Manager, Logger, Request_Handler, Strand, Socket > Struct Template Reference

#include <traits.hpp>

Public Types

using http_methods_mapper_t = default_http_methods_t
 A type for HTTP methods mapping. More...
 
using connection_state_listener_t = connection_state::noop_listener_t
 A type for connection state listener. More...
 
using ip_blocker_t = ip_blocker::noop_ip_blocker_t
 A type for IP-blocker. More...
 
using timer_manager_t = Timer_Manager
 
using logger_t = Logger
 
using request_handler_t = Request_Handler
 
using strand_t = Strand
 
using stream_socket_t = Socket
 

Static Public Attributes

static constexpr bool use_connection_count_limiter = false
 A flag that enables or disables the usage of connection count limiter. More...
 

Detailed Description

template<typename Timer_Manager, typename Logger, typename Request_Handler = default_request_handler_t, typename Strand = default_strand_t, typename Socket = asio_ns::ip::tcp::socket>
struct restinio::traits_t< Timer_Manager, Logger, Request_Handler, Strand, Socket >

Examples
sample/async_handling_with_sobjectizer/main.cpp, sample/connection_state/main.cpp, sample/express_router/main.cpp, sample/express_router_tutorial/main.cpp, sample/file_upload/main.cpp, sample/hello_world/main.cpp, sample/hello_world_https/main.cpp, sample/hello_world_sendfile/main.cpp, sample/hello_world_sendfile_https/main.cpp, sample/ip_blocker/main.cpp, sample/sendfiles/main.cpp, sample/shared_tls_context/main.cpp, sample/tls_inspector/main.cpp, sample/websocket/main.cpp, sample/websocket_detailed/main.cpp, and sample/websocket_wss/main.cpp.

Definition at line 32 of file traits.hpp.

Member Typedef Documentation

◆ connection_state_listener_t

template<typename Timer_Manager , typename Logger , typename Request_Handler = default_request_handler_t, typename Strand = default_strand_t, typename Socket = asio_ns::ip::tcp::socket>
using restinio::traits_t< Timer_Manager, Logger, Request_Handler, Strand, Socket >::connection_state_listener_t = connection_state::noop_listener_t

A type for connection state listener.

By default RESTinio doesn't inform about changes with connection state. But if a user specify its type of connection state listener then RESTinio will call this listener object when the state of connection changes.

An example:

// Definition of user's state listener.
class my_state_listener {
...
public:
...
void state_changed(const restinio::connection_state::notice_t & notice) noexcept {
... // some reaction to state change.
}
};
// Definition of custom traits for HTTP server.
struct my_server_traits : public restinio::default_traits_t {
using connection_state_listener_t = my_state_listener;
};
Since
v.0.5.1

Definition at line 99 of file traits.hpp.

◆ http_methods_mapper_t

template<typename Timer_Manager , typename Logger , typename Request_Handler = default_request_handler_t, typename Strand = default_strand_t, typename Socket = asio_ns::ip::tcp::socket>
using restinio::traits_t< Timer_Manager, Logger, Request_Handler, Strand, Socket >::http_methods_mapper_t = default_http_methods_t

A type for HTTP methods mapping.

If RESTinio is used with vanila version of http_parser then the default value of http_methods_mapper_t is enough. But if a user uses modified version of http_parser with support of additional, not-standard HTTP methods then the user should provide its http_methods_mapper. For example:

// Definition for non-standard HTTP methods.
// Note: values of HTTP_ENCODE and HTTP_DECODE are from modified
// http_parser version.
constexpr const restinio::http_method_id_t http_encode(HTTP_ENCODE, "ENCODE");
constexpr const restinio::http_method_id_t http_decode(HTTP_DECODE, "DECODE");
// Definition of non-standard http_method_mapper.
struct my_http_method_mapper {
inline constexpr restinio::http_method_id_t
from_nodejs(int value) noexcept {
switch(value) {
case HTTP_ENCODE: return http_encode;
case HTTP_DECODE: return http_decode;
}
}
};
...
// Make a custom traits with non-standard http_method_mapper.
struct my_server_traits : public restinio::default_traits_t {
using http_methods_mapper_t = my_http_method_mapper;
};
Since
v.0.5.0

Definition at line 69 of file traits.hpp.

◆ ip_blocker_t

template<typename Timer_Manager , typename Logger , typename Request_Handler = default_request_handler_t, typename Strand = default_strand_t, typename Socket = asio_ns::ip::tcp::socket>
using restinio::traits_t< Timer_Manager, Logger, Request_Handler, Strand, Socket >::ip_blocker_t = ip_blocker::noop_ip_blocker_t

A type for IP-blocker.

By default RESTinio's accepts all incoming connections. But since v.0.5.1 a user can specify IP-blocker object that will be called for every new connection. This IP-blocker can deny or allow a new connection.

Type of that IP-blocker object is specified by typedef ip_blocker_t.

An example:

// Definition of user's IP-blocker.
class my_ip_blocker {
...
public:
...
state_changed(const restinio::ip_blocker::incoming_info_t & info) noexcept {
... // some checking for new connection.
}
};
// Definition of custom traits for HTTP server.
struct my_server_traits : public restinio::default_traits_t {
using ip_blocker_t = my_ip_blocker;
};
Since
v.0.5.1

Definition at line 133 of file traits.hpp.

◆ logger_t

template<typename Timer_Manager , typename Logger , typename Request_Handler = default_request_handler_t, typename Strand = default_strand_t, typename Socket = asio_ns::ip::tcp::socket>
using restinio::traits_t< Timer_Manager, Logger, Request_Handler, Strand, Socket >::logger_t = Logger

Definition at line 136 of file traits.hpp.

◆ request_handler_t

template<typename Timer_Manager , typename Logger , typename Request_Handler = default_request_handler_t, typename Strand = default_strand_t, typename Socket = asio_ns::ip::tcp::socket>
using restinio::traits_t< Timer_Manager, Logger, Request_Handler, Strand, Socket >::request_handler_t = Request_Handler

Definition at line 137 of file traits.hpp.

◆ strand_t

template<typename Timer_Manager , typename Logger , typename Request_Handler = default_request_handler_t, typename Strand = default_strand_t, typename Socket = asio_ns::ip::tcp::socket>
using restinio::traits_t< Timer_Manager, Logger, Request_Handler, Strand, Socket >::strand_t = Strand

Definition at line 138 of file traits.hpp.

◆ stream_socket_t

template<typename Timer_Manager , typename Logger , typename Request_Handler = default_request_handler_t, typename Strand = default_strand_t, typename Socket = asio_ns::ip::tcp::socket>
using restinio::traits_t< Timer_Manager, Logger, Request_Handler, Strand, Socket >::stream_socket_t = Socket

Definition at line 139 of file traits.hpp.

◆ timer_manager_t

template<typename Timer_Manager , typename Logger , typename Request_Handler = default_request_handler_t, typename Strand = default_strand_t, typename Socket = asio_ns::ip::tcp::socket>
using restinio::traits_t< Timer_Manager, Logger, Request_Handler, Strand, Socket >::timer_manager_t = Timer_Manager

Definition at line 135 of file traits.hpp.

Member Data Documentation

◆ use_connection_count_limiter

template<typename Timer_Manager , typename Logger , typename Request_Handler = default_request_handler_t, typename Strand = default_strand_t, typename Socket = asio_ns::ip::tcp::socket>
constexpr bool restinio::traits_t< Timer_Manager, Logger, Request_Handler, Strand, Socket >::use_connection_count_limiter = false
staticconstexpr

A flag that enables or disables the usage of connection count limiter.

Since v.0.6.12 RESTinio allows to limit the number of active parallel connections to a server. But the usage of this limit should be turned on explicitly. For example:

struct my_traits : public restinio::default_traits_t {
static constexpr bool use_connection_count_limiter = true;
};

In that case there will be max_parallel_connections method in server_settings_t type. That method should be explicitly called to set a specific limit (by the default there is no limit at all):

Since
v.0.6.12

Definition at line 164 of file traits.hpp.


The documentation for this struct was generated from the following file:
restinio::http_method_id_t
A type for representation of HTTP method ID.
Definition: http_headers.hpp:1744
restinio::ip_blocker::inspection_result_t
inspection_result_t
Enumeration of result of inspecting new incoming connection.
Definition: ip_blocker.hpp:31
restinio::traits_t::use_connection_count_limiter
static constexpr bool use_connection_count_limiter
A flag that enables or disables the usage of connection count limiter.
Definition: traits.hpp:164
restinio::traits_t
Definition: traits.hpp:33
restinio::traits_t::http_methods_mapper_t
default_http_methods_t http_methods_mapper_t
A type for HTTP methods mapping.
Definition: traits.hpp:69
restinio::default_http_methods_t::from_nodejs
static constexpr http_method_id_t from_nodejs(int value) noexcept
Definition: http_headers.hpp:1835
restinio::traits_t::connection_state_listener_t
connection_state::noop_listener_t connection_state_listener_t
A type for connection state listener.
Definition: traits.hpp:99
restinio::traits_t::ip_blocker_t
ip_blocker::noop_ip_blocker_t ip_blocker_t
A type for IP-blocker.
Definition: traits.hpp:133
restinio::connection_state::notice_t
An object with info about connection to be passed to state listener.
Definition: connection_state_listener.hpp:225
restinio::ip_blocker::incoming_info_t
An information about new incoming connection to be passed to IP-blocker object.
Definition: ip_blocker.hpp:64
restinio::server_settings_t
A fluent style interface for setting http server params.
Definition: settings.hpp:1650
restinio::basic_server_settings_t< server_settings_t< default_traits_t >, default_traits_t >::max_parallel_connections
server_settings_t< default_traits_t > & max_parallel_connections(std::size_t value) &noexcept
Setter for connection count limit.
Definition: settings.hpp:1501