RESTinio
Public Types | 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
 

Detailed Description

template<typename Timer_Manager, typename Logger, typename Request_Handler = default_request_handler_t, typename Strand = asio_ns::strand< asio_ns::executor >, 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/express_router/main.cpp, sample/express_router_tutorial/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/sendfiles/main.cpp, sample/websocket/main.cpp, sample/websocket_detailed/main.cpp, and sample/websocket_wss/main.cpp.

Definition at line 30 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 = asio_ns::strand< asio_ns::executor >, 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 97 of file traits.hpp.

◆ http_methods_mapper_t

template<typename Timer_Manager , typename Logger , typename Request_Handler = default_request_handler_t, typename Strand = asio_ns::strand< asio_ns::executor >, 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 67 of file traits.hpp.

◆ ip_blocker_t

template<typename Timer_Manager , typename Logger , typename Request_Handler = default_request_handler_t, typename Strand = asio_ns::strand< asio_ns::executor >, 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 131 of file traits.hpp.

◆ logger_t

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

Definition at line 134 of file traits.hpp.

◆ request_handler_t

template<typename Timer_Manager , typename Logger , typename Request_Handler = default_request_handler_t, typename Strand = asio_ns::strand< asio_ns::executor >, 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 135 of file traits.hpp.

◆ strand_t

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

Definition at line 136 of file traits.hpp.

◆ stream_socket_t

template<typename Timer_Manager , typename Logger , typename Request_Handler = default_request_handler_t, typename Strand = asio_ns::strand< asio_ns::executor >, 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 137 of file traits.hpp.

◆ timer_manager_t

template<typename Timer_Manager , typename Logger , typename Request_Handler = default_request_handler_t, typename Strand = asio_ns::strand< asio_ns::executor >, 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 133 of file traits.hpp.


The documentation for this struct was generated from the following file: