RESTinio
Loading...
Searching...
No Matches
Public Member Functions | Private Types | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
restinio::basic_server_settings_t< Derived, Traits > Class Template Reference

Basic container for http_server settings. More...

#include <settings.hpp>

Inheritance diagram for restinio::basic_server_settings_t< Derived, Traits >:
restinio::socket_type_dependent_settings_t< Derived, Traits::stream_socket_t > restinio::connection_state_listener_holder_t< Traits::connection_state_listener_t > restinio::ip_blocker_holder_t< Traits::ip_blocker_t > restinio::details::max_parallel_connections_holder_t< connection_count_limit_types< Traits >::limiter_t > restinio::server_settings_t< Traits >

Public Member Functions

 basic_server_settings_t (std::uint16_t port=8080, asio_ns::ip::tcp protocol=asio_ns::ip::tcp::v4())
 
Derivedbuffer_size (std::size_t s) &
 Size of buffer for io operations.
 
Derived && buffer_size (std::size_t s) &&
 
std::size_t buffer_size () const
 
Derivedconnection_state_listener (std::shared_ptr< typename Traits::connection_state_listener_t > listener) &
 Setter for connection state listener.
 
Derived && connection_state_listener (std::shared_ptr< typename Traits::connection_state_listener_t > listener) &&
 Setter for connection state listener.
 
const std::shared_ptr< typename Traits::connection_state_listener_t > & connection_state_listener () const noexcept
 Get reference to connection state listener.
 
void ensure_valid_connection_state_listener ()
 Internal method for checking presence of state listener object.
 
Derivedip_blocker (std::shared_ptr< typename Traits::ip_blocker_t > blocker) &
 Setter for IP-blocker.
 
Derived && ip_blocker (std::shared_ptr< typename Traits::ip_blocker_t > blocker) &&
 Setter for IP-blocker.
 
const std::shared_ptr< typename Traits::ip_blocker_t > & ip_blocker () const noexcept
 Get reference to IP-blocker.
 
void ensure_valid_ip_blocker ()
 Internal method for checking presence of IP-blocker object.
 
Derivedacceptor_post_bind_hook (acceptor_post_bind_hook_t hook) &
 A setter for post-bind callback.
 
Derived && acceptor_post_bind_hook (acceptor_post_bind_hook_t hook) &&
 A setter for post-bind callback.
 
acceptor_post_bind_hook_t giveaway_acceptor_post_bind_hook ()
 A getter for post-bind callback.
 
const incoming_http_msg_limits_tincoming_http_msg_limits () const noexcept
 Getter of optional limits for incoming HTTP messages.
 
Derivedincoming_http_msg_limits (const incoming_http_msg_limits_t &limits) &noexcept
 Setter of optional limits for incoming HTTP messages.
 
Derived && incoming_http_msg_limits (const incoming_http_msg_limits_t &limits) &&noexcept
 Setter of optional limits for incoming HTTP messages.
 
Derivedmax_parallel_connections (std::size_t value) &noexcept
 Setter for connection count limit.
 
Derived && max_parallel_connections (std::size_t value) &&noexcept
 Setter for connection count limit.
 
std::size_t max_parallel_connections () const noexcept
 
Derivedport (std::uint16_t p) &
 Server endpoint.
 
Derived && port (std::uint16_t p) &&
 
std::uint16_t port () const
 
Derivedprotocol (asio_ns::ip::tcp p) &
 
Derived && protocol (asio_ns::ip::tcp p) &&
 
asio_ns::ip::tcp protocol () const
 
Derivedaddress (std::string addr) &
 
Derived && address (std::string addr) &&
 
Derivedaddress (asio_ns::ip::address addr) &
 
Derived && address (asio_ns::ip::address addr) &&
 
const details::address_variant_taddress () const
 
Derivedread_next_http_message_timelimit (std::chrono::steady_clock::duration d) &
 }
 
Derived && read_next_http_message_timelimit (std::chrono::steady_clock::duration d) &&
 
std::chrono::steady_clock::duration read_next_http_message_timelimit () const
 
Derivedwrite_http_response_timelimit (std::chrono::steady_clock::duration d) &
 A period of time wait for response to be written to socket.
 
Derived && write_http_response_timelimit (std::chrono::steady_clock::duration d) &&
 
std::chrono::steady_clock::duration write_http_response_timelimit () const
 
Derivedhandle_request_timeout (std::chrono::steady_clock::duration d) &
 A period of time that is given for a handler to create response.
 
Derived && handle_request_timeout (std::chrono::steady_clock::duration d) &&
 
std::chrono::steady_clock::duration handle_request_timeout () const
 
Derivedmax_pipelined_requests (std::size_t mpr) &
 Max pipelined requests able to receive on single connection.
 
Derived && max_pipelined_requests (std::size_t mpr) &&
 
std::size_t max_pipelined_requests () const
 
Acceptor options setter.
Derivedacceptor_options_setter (acceptor_options_setter_t aos) &
 
Derived && acceptor_options_setter (acceptor_options_setter_t aos) &&
 
std::unique_ptr< acceptor_options_setter_tacceptor_options_setter ()
 
Socket options setter.
Derivedsocket_options_setter (socket_options_setter_t sos) &
 
Derived && socket_options_setter (socket_options_setter_t sos) &&
 
std::unique_ptr< socket_options_setter_tsocket_options_setter ()
 
Derivedconcurrent_accepts_count (std::size_t n) &
 Max number of running concurrent accepts.
 
Derived && concurrent_accepts_count (std::size_t n) &&
 
std::size_t concurrent_accepts_count () const
 
Derivedseparate_accept_and_create_connect (bool do_separate) &noexcept
 Do separate an accept operation and connection instantiation.
 
Derived && separate_accept_and_create_connect (bool do_separate) &&noexcept
 
bool separate_accept_and_create_connect () const noexcept
 
Cleanup function.
template<typename Func >
Derivedcleanup_func (Func &&func) &
 
template<typename Func >
Derived && cleanup_func (Func &&func) &&
 
cleanup_functor_t giveaway_cleanup_func ()
 
- Public Member Functions inherited from restinio::socket_type_dependent_settings_t< Derived, Traits::stream_socket_t >
 socket_type_dependent_settings_t () noexcept=default
 
 socket_type_dependent_settings_t (const socket_type_dependent_settings_t &) noexcept=default
 
 socket_type_dependent_settings_t (socket_type_dependent_settings_t &&) noexcept=default
 
socket_type_dependent_settings_toperator= (const socket_type_dependent_settings_t &) noexcept=default
 
socket_type_dependent_settings_toperator= (socket_type_dependent_settings_t &&) noexcept=delete
 

Private Types

using base_type_t
 
using max_parallel_connections_holder_base_t
 

Private Member Functions

Derivedreference_to_derived ()
 
template<typename Target , typename... Params>
Derivedset_unique_instance (std::unique_ptr< Target > &t, Params &&... params)
 
template<typename Target , typename... Params>
Derivedset_shared_instance (std::shared_ptr< Target > &t, Params &&... params)
 

Private Attributes

std::size_t m_buffer_size { 4 * 1024 }
 Size of buffer for io operations.
 
std::size_t m_max_pipelined_requests { 1 }
 Max pipelined requests to receive on single connection.
 
std::unique_ptr< request_handler_tm_request_handler
 Request handler.
 
std::unique_ptr< timer_factory_tm_timer_factory
 Timers factory.
 
std::unique_ptr< logger_tm_logger
 Logger.
 
std::unique_ptr< acceptor_options_setter_tm_acceptor_options_setter
 Acceptor options setter.
 
acceptor_post_bind_hook_t m_acceptor_post_bind_hook
 A hook to be called just after a successful call to bind for acceptor.
 
std::unique_ptr< socket_options_setter_tm_socket_options_setter
 Socket options setter.
 
std::size_t m_concurrent_accepts_count { 1 }
 
bool m_separate_accept_and_create_connect { false }
 Do separate an accept operation and connection instantiation.
 
cleanup_functor_t m_cleanup_functor
 Optional cleanup functor.
 
incoming_http_msg_limits_t m_incoming_http_msg_limits
 Limits for incoming HTTP messages.
 
extra_data_factory_handle_t m_extra_data_factory
 User-data-factory for server.
 
std::uint16_t m_port
 Server endpoint.
 
asio_ns::ip::tcp m_protocol
 
details::address_variant_t m_address
 
std::chrono::steady_clock::duration m_read_next_http_message_timelimit { std::chrono::seconds( 60 ) }
 Operations timeouts.
 
std::chrono::steady_clock::duration m_write_http_response_timelimit { std::chrono::seconds( 5 ) }
 
std::chrono::steady_clock::duration m_handle_request_timeout { std::chrono::seconds( 10 ) }
 

Static Private Attributes

static constexpr bool has_actual_max_parallel_connections
 
using request_handler_t = request_handler_type_from_traits_t< Traits >
 Request handler.
 
Derivedrequest_handler (std::unique_ptr< request_handler_t > handler) &
 
template<typename... Params>
Derivedrequest_handler (Params &&... params) &
 
template<typename... Params>
Derived && request_handler (Params &&... params) &&
 
std::unique_ptr< request_handler_trequest_handler ()
 

Timers manager.

using timer_manager_t = typename Traits::timer_manager_t
 Short alias for timer_manager type.
 
using timer_factory_t = typename timer_manager_t::factory_t
 Short alias for type of a factory that creates instances of timer_manager.
 
template<typename... Params>
Derivedtimer_manager (Params &&... params) &
 Creates a factory object that will be used for creation of an actual timer_manager instance.
 
template<typename... Params>
Derived && timer_manager (Params &&... params) &&
 Creates a factory object that will be used for creation of an actual timer_manager instance.
 
std::unique_ptr< timer_factory_ttimer_factory ()
 

Logger.

using logger_t = typename Traits::logger_t
 
template<typename... Params>
Derivedlogger (Params &&... params) &
 
template<typename... Params>
Derived && logger (Params &&... params) &&
 
std::unique_ptr< logger_tlogger ()
 

User-data factory.

using extra_data_factory_t = typename Traits::extra_data_factory_t
 The actual type of extra-data-factory.
 
using extra_data_factory_handle_t = std::shared_ptr< extra_data_factory_t >
 Type of shared-pointer to extra-data-factory.
 
Derivedextra_data_factory (extra_data_factory_handle_t factory) &
 Setter for extra-data-factory.
 
Derived && extra_data_factory (extra_data_factory_handle_t factory) &&
 Setter for extra-data-factory.
 
extra_data_factory_handle_t giveaway_extra_data_factory () const noexcept
 Extractor for extra-data-factory.
 

Additional Inherited Members

- Protected Member Functions inherited from restinio::socket_type_dependent_settings_t< Derived, Traits::stream_socket_t >
 ~socket_type_dependent_settings_t () noexcept=default
 
- Protected Member Functions inherited from restinio::connection_state_listener_holder_t< Traits::connection_state_listener_t >
void check_valid_connection_state_listener_pointer () const
 Checks that pointer to state listener is not null.
 
- Protected Member Functions inherited from restinio::ip_blocker_holder_t< Traits::ip_blocker_t >
void check_valid_ip_blocker_pointer () const
 Checks that pointer to IP-blocker is not null.
 
- Protected Member Functions inherited from restinio::details::max_parallel_connections_holder_t< connection_count_limit_types< Traits >::limiter_t >
std::size_t max_parallel_connections () const noexcept
 
void set_max_parallel_connections (std::size_t v) noexcept
 
- Protected Attributes inherited from restinio::connection_state_listener_holder_t< Traits::connection_state_listener_t >
std::shared_ptr< Traits::connection_state_listener_t > m_connection_state_listener
 
- Protected Attributes inherited from restinio::ip_blocker_holder_t< Traits::ip_blocker_t >
std::shared_ptr< Traits::ip_blocker_t > m_ip_blocker
 
- Protected Attributes inherited from restinio::details::max_parallel_connections_holder_t< connection_count_limit_types< Traits >::limiter_t >
std::size_t m_max_parallel_connections
 Actual value of the limit.
 
- Static Protected Attributes inherited from restinio::connection_state_listener_holder_t< Traits::connection_state_listener_t >
static constexpr bool has_actual_connection_state_listener
 
- Static Protected Attributes inherited from restinio::ip_blocker_holder_t< Traits::ip_blocker_t >
static constexpr bool has_actual_ip_blocker
 
- Static Protected Attributes inherited from restinio::details::max_parallel_connections_holder_t< connection_count_limit_types< Traits >::limiter_t >
static constexpr bool has_actual_max_parallel_connections
 

Detailed Description

template<typename Derived, typename Traits>
class restinio::basic_server_settings_t< Derived, Traits >

Basic container for http_server settings.

It exists to provide ablity to create various derived classes like server_settings_t, run_on_this_thread_settings_t, run_on_this_thread_settings_t and so on.

Template Parameters
DerivedA drived type. Reference to this derived type will be returned by setters.
TraitsA type with traits for http_server.

Definition at line 548 of file settings.hpp.

Member Typedef Documentation

◆ base_type_t

Initial value:
Derived, typename Traits::stream_socket_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.

Definition at line 556 of file settings.hpp.

◆ extra_data_factory_handle_t

using restinio::basic_server_settings_t< Derived, Traits >::extra_data_factory_handle_t = std::shared_ptr< extra_data_factory_t >

Type of shared-pointer to extra-data-factory.

Since
v.0.6.13

Definition at line 1594 of file settings.hpp.

◆ extra_data_factory_t

using restinio::basic_server_settings_t< Derived, Traits >::extra_data_factory_t = typename Traits::extra_data_factory_t

The actual type of extra-data-factory.

Since
v.0.6.13

Definition at line 1589 of file settings.hpp.

◆ logger_t

Definition at line 950 of file settings.hpp.

◆ max_parallel_connections_holder_base_t

using restinio::basic_server_settings_t< Derived, Traits >::max_parallel_connections_holder_base_t
private
Initial value:
details::max_parallel_connections_holder_t<
typename std::conditional< Traits::use_connection_count_limiter, connection_count_limits::connection_count_limiter_t< typename Traits::strand_t >, connection_count_limits::noop_connection_count_limiter_t >::type limiter_t

Definition at line 559 of file settings.hpp.

◆ request_handler_t

Request handler.

Definition at line 844 of file settings.hpp.

◆ timer_factory_t

using restinio::basic_server_settings_t< Derived, Traits >::timer_factory_t = typename timer_manager_t::factory_t

Short alias for type of a factory that creates instances of timer_manager.

Definition at line 890 of file settings.hpp.

◆ timer_manager_t

using restinio::basic_server_settings_t< Derived, Traits >::timer_manager_t = typename Traits::timer_manager_t

Short alias for timer_manager type.

Definition at line 885 of file settings.hpp.

Constructor & Destructor Documentation

◆ basic_server_settings_t()

restinio::basic_server_settings_t< Derived, Traits >::basic_server_settings_t ( std::uint16_t port = 8080,
asio_ns::ip::tcp protocol = asio_ns::ip::tcp::v4() )
inline

Definition at line 574 of file settings.hpp.

Member Function Documentation

◆ acceptor_options_setter() [1/3]

std::unique_ptr< acceptor_options_setter_t > restinio::basic_server_settings_t< Derived, Traits >::acceptor_options_setter ( )
inline

Definition at line 997 of file settings.hpp.

◆ acceptor_options_setter() [2/3]

Definition at line 980 of file settings.hpp.

◆ acceptor_options_setter() [3/3]

Derived && restinio::basic_server_settings_t< Derived, Traits >::acceptor_options_setter ( acceptor_options_setter_t aos) &&
inline

Definition at line 991 of file settings.hpp.

◆ acceptor_post_bind_hook() [1/2]

A setter for post-bind callback.

Usage example:

my_server_t server{
[](auto & settings) {
settings.port(...);
settings.address(...);
settings.acceptor_post_bind_hook(
[](asio::ip::tcp::acceptor & acceptor) {
...
})
settings.request_handler(...);
...
}
};
Class for http-server.
io_context_holder_t own_io_context()
Function which tells that http_server should create and use its own instance of io_context.
Since
v.0.6.11

Definition at line 1384 of file settings.hpp.

◆ acceptor_post_bind_hook() [2/2]

Derived && restinio::basic_server_settings_t< Derived, Traits >::acceptor_post_bind_hook ( acceptor_post_bind_hook_t hook) &&
inline

A setter for post-bind callback.

Usage example:

.port(...)
.address(...)
[](asio::ip::tcp::acceptor & acceptor) {
...
})
);
const details::address_variant_t & address() const
Definition settings.hpp:716
std::unique_ptr< request_handler_t > request_handler()
Definition settings.hpp:871
std::uint16_t port() const
Definition settings.hpp:599
Derived & acceptor_post_bind_hook(acceptor_post_bind_hook_t hook) &
A setter for post-bind callback.
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.
Since
v.0.6.11

Definition at line 1413 of file settings.hpp.

◆ address() [1/5]

Definition at line 716 of file settings.hpp.

◆ address() [2/5]

Derived & restinio::basic_server_settings_t< Derived, Traits >::address ( asio_ns::ip::address addr) &
inline

Sets the IP address for a server in binary form.

Usage example:

auto actual_ip = asio::ip::address::from_string(app.config().ip_addr());
...
my_server_t server{
[actual_ip](auto & settings) {
settings.port(8080);
settings.address(actual_ip);
settings.request_handler(...);
...
}
};

Definition at line 687 of file settings.hpp.

◆ address() [3/5]

Derived && restinio::basic_server_settings_t< Derived, Traits >::address ( asio_ns::ip::address addr) &&
inline

Sets the IP address for a server in binary form.

Usage example:

auto actual_ip = asio::ip::address::from_string(app.config().ip_addr());
...
restinio::run(
.port(...)
);

Definition at line 709 of file settings.hpp.

◆ address() [4/5]

Derived & restinio::basic_server_settings_t< Derived, Traits >::address ( std::string addr) &
inline

Sets the IP address for a server in textual form.

Usage example:

my_server_t server{
[](auto & settings) {
settings.port(8080);
settings.address("192.168.1.1");
settings.request_handler(...);
...
}
};
Examples
sample/shared_tls_context/main.cpp.

Definition at line 642 of file settings.hpp.

◆ address() [5/5]

Derived && restinio::basic_server_settings_t< Derived, Traits >::address ( std::string addr) &&
inline

Sets the IP address for a server in textual form.

Usage example:

Definition at line 662 of file settings.hpp.

◆ buffer_size() [1/3]

std::size_t restinio::basic_server_settings_t< Derived, Traits >::buffer_size ( ) const
inline

Definition at line 742 of file settings.hpp.

◆ buffer_size() [2/3]

Derived & restinio::basic_server_settings_t< Derived, Traits >::buffer_size ( std::size_t s) &
inline

Size of buffer for io operations.

It limits a size of chunk that can be read from socket in a single read operattion (async read). {

Definition at line 729 of file settings.hpp.

◆ buffer_size() [3/3]

Derived && restinio::basic_server_settings_t< Derived, Traits >::buffer_size ( std::size_t s) &&
inline

Definition at line 736 of file settings.hpp.

◆ cleanup_func() [1/2]

template<typename Func >
Derived & restinio::basic_server_settings_t< Derived, Traits >::cleanup_func ( Func && func) &
inline

Definition at line 1100 of file settings.hpp.

◆ cleanup_func() [2/2]

template<typename Func >
Derived && restinio::basic_server_settings_t< Derived, Traits >::cleanup_func ( Func && func) &&
inline

Definition at line 1108 of file settings.hpp.

◆ concurrent_accepts_count() [1/3]

std::size_t restinio::basic_server_settings_t< Derived, Traits >::concurrent_accepts_count ( ) const
inline

Definition at line 1060 of file settings.hpp.

◆ concurrent_accepts_count() [2/3]

Derived & restinio::basic_server_settings_t< Derived, Traits >::concurrent_accepts_count ( std::size_t n) &
inline

Max number of running concurrent accepts.

When running server on N threads then up to N accepts can be handled concurrently.

Definition at line 1040 of file settings.hpp.

◆ concurrent_accepts_count() [3/3]

Derived && restinio::basic_server_settings_t< Derived, Traits >::concurrent_accepts_count ( std::size_t n) &&
inline

Definition at line 1054 of file settings.hpp.

◆ connection_state_listener() [1/3]

const std::shared_ptr< typename Traits::connection_state_listener_t > & restinio::basic_server_settings_t< Derived, Traits >::connection_state_listener ( ) const
inlinenoexcept

Get reference to connection state listener.

Attention
This method can't be called if the default no-op state listener is used in server traits.
Since
v.0.5.1

Definition at line 1218 of file settings.hpp.

◆ connection_state_listener() [2/3]

Derived & restinio::basic_server_settings_t< Derived, Traits >::connection_state_listener ( std::shared_ptr< typename Traits::connection_state_listener_t > listener) &
inline

Setter for connection state listener.

Note
connection_state_listener() method should be called if user specify its type for connection_state_listener_t traits. For example:
...
public:
...
void state_changed(const restinio::connection_state::notice_t & notice) noexcept {
...
}
};
using connection_state_listener_t = my_state_listener_t;
};
setting.connection_state_listener( std::make_shared<my_state_listener_t>(...) );
...
An object with info about connection to be passed to state listener.
Attention
This method can't be called if the default no-op state listener is used in server traits.
Since
v.0.5.1

Definition at line 1158 of file settings.hpp.

◆ connection_state_listener() [3/3]

Derived && restinio::basic_server_settings_t< Derived, Traits >::connection_state_listener ( std::shared_ptr< typename Traits::connection_state_listener_t > listener) &&
inline

Setter for connection state listener.

Note
connection_state_listener() method should be called if user specify its type for connection_state_listener_t traits. For example:
...
public:
...
void state_changed(const restinio::connection_state::notice_t & notice) noexcept {
...
}
};
using connection_state_listener_t = my_state_listener_t;
};
.connection_state_listener( std::make_shared<my_state_listener_t>(...) )
.port(...)
...);
Derived & connection_state_listener(std::shared_ptr< typename Traits::connection_state_listener_t > listener) &
Setter for connection state listener.
Attention
This method can't be called if the default no-op state listener is used in server traits.
Since
v.0.5.1

Definition at line 1202 of file settings.hpp.

◆ ensure_valid_connection_state_listener()

void restinio::basic_server_settings_t< Derived, Traits >::ensure_valid_connection_state_listener ( )
inline

Internal method for checking presence of state listener object.

If a user specifies custom state listener type but doesn't set a pointer to listener object that method throws an exception.

Since
v.0.5.1

Definition at line 1238 of file settings.hpp.

◆ ensure_valid_ip_blocker()

void restinio::basic_server_settings_t< Derived, Traits >::ensure_valid_ip_blocker ( )
inline

Internal method for checking presence of IP-blocker object.

If a user specifies custom IP-blocker type but doesn't set a pointer to blocker object that method throws an exception.

Since
v.0.5.1

Definition at line 1354 of file settings.hpp.

◆ extra_data_factory() [1/2]

Setter for extra-data-factory.

Usage example:

... // Some factory's data.
public:
struct data_t {...};
my_extra_data_factory(...) {...}
void make_within(restinio::extra_data_buffer_t<data_t> buf) {
new(buf.get()) data_t{...};
}
};
using extra_data_factory_t = my_extra_data_factory;
};
...
settings.extra_data_factory(std::make_shared<my_extra_data_factory>(...));
...
auto server = restinio::run_async(
std::move(settings),
std::thread::hardware_concurrency());
Derived & extra_data_factory(extra_data_factory_handle_t factory) &
Setter for extra-data-factory.
Helper for holding a pointer to a buffer where a new object of type Extra_Data should be constructed.
void * get() const noexcept
A fluent style interface for setting http server params.
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.
Since
v.0.6.13

Definition at line 1630 of file settings.hpp.

◆ extra_data_factory() [2/2]

Setter for extra-data-factory.

Usage example:

... // Some factory's data.
public:
struct data_t {...};
my_extra_data_factory(...) {...}
void make_within(restinio::extra_data_buffer_t<data_t> buf) {
new(buf.get()) data_t{...};
}
};
using extra_data_factory_t = my_extra_data_factory;
};
auto server = restinio::run_async(
.extra_data_factory(std::make_shared<my_extra_data_factory>(...))
...
,
std::thread::hardware_concurrency());
Since
v.0.6.13

Definition at line 1670 of file settings.hpp.

◆ giveaway_acceptor_post_bind_hook()

acceptor_post_bind_hook_t restinio::basic_server_settings_t< Derived, Traits >::giveaway_acceptor_post_bind_hook ( )
inline

A getter for post-bind callback.

Note
This method is intended to be used by RESTinio and it can be changed or removed in future versions of RESTinio without any notice.
Since
v.0.6.11

Definition at line 1430 of file settings.hpp.

◆ giveaway_cleanup_func()

Note
This method is intended to be used by RESTinio and it can be changed or removed in future versions of RESTinio without any notice.

Definition at line 1121 of file settings.hpp.

◆ giveaway_extra_data_factory()

extra_data_factory_handle_t restinio::basic_server_settings_t< Derived, Traits >::giveaway_extra_data_factory ( ) const
inlinenoexcept

Extractor for extra-data-factory.

Since
v.0.6.13

Definition at line 1682 of file settings.hpp.

◆ handle_request_timeout() [1/3]

std::chrono::steady_clock::duration restinio::basic_server_settings_t< Derived, Traits >::handle_request_timeout ( ) const
inline

Definition at line 813 of file settings.hpp.

◆ handle_request_timeout() [2/3]

Derived & restinio::basic_server_settings_t< Derived, Traits >::handle_request_timeout ( std::chrono::steady_clock::duration d) &
inline

A period of time that is given for a handler to create response.

Definition at line 800 of file settings.hpp.

◆ handle_request_timeout() [3/3]

Derived && restinio::basic_server_settings_t< Derived, Traits >::handle_request_timeout ( std::chrono::steady_clock::duration d) &&
inline

Definition at line 807 of file settings.hpp.

◆ incoming_http_msg_limits() [1/3]

const incoming_http_msg_limits_t & restinio::basic_server_settings_t< Derived, Traits >::incoming_http_msg_limits ( ) const
inlinenoexcept

Getter of optional limits for incoming HTTP messages.

In v.0.6.12 if the limits for incoming HTTP messages are not set explicitely then a defaultly constructed instance of incoming_http_msg_limits_t is used. This means the absence of any limits.

But if the limits were set by using appropriate setters then a reference to an instance with user-defined limits is returned.

Since
v.0.6.12

Definition at line 1450 of file settings.hpp.

◆ incoming_http_msg_limits() [2/3]

Derived && restinio::basic_server_settings_t< Derived, Traits >::incoming_http_msg_limits ( const incoming_http_msg_limits_t & limits) &&
inlinenoexcept

Setter of optional limits for incoming HTTP messages.

Usage example:

struct my_traits : public restinio::default_traits_t { ... };
...
auto server = restinio::run_async(
...
.max_url_size(8000u)
.max_field_name_size(2048u)
.max_field_value_size(4096u)
),
std::thread::hardware_concurrency());
const incoming_http_msg_limits_t & incoming_http_msg_limits() const noexcept
Getter of optional limits for incoming HTTP messages.
A type of holder of limits related to an incoming HTTP message.
Since
v.0.6.12

Definition at line 1508 of file settings.hpp.

◆ incoming_http_msg_limits() [3/3]

Derived & restinio::basic_server_settings_t< Derived, Traits >::incoming_http_msg_limits ( const incoming_http_msg_limits_t & limits) &
inlinenoexcept

Setter of optional limits for incoming HTTP messages.

Usage example:

struct my_traits : public restinio::default_traits_t { ... };
.max_url_size(8000u)
.max_field_name_size(2048u)
.max_field_value_size(4096u)
);
...
auto server = restinio::run_async(
std::move(settings),
std::thread::hardware_concurrency());
Since
v.0.6.12

Definition at line 1478 of file settings.hpp.

◆ ip_blocker() [1/3]

const std::shared_ptr< typename Traits::ip_blocker_t > & restinio::basic_server_settings_t< Derived, Traits >::ip_blocker ( ) const
inlinenoexcept

Get reference to IP-blocker.

Attention
This method can't be called if the default no-op IP-blocker is used in server traits.
Since
v.0.5.1

Definition at line 1335 of file settings.hpp.

◆ ip_blocker() [2/3]

Derived & restinio::basic_server_settings_t< Derived, Traits >::ip_blocker ( std::shared_ptr< typename Traits::ip_blocker_t > blocker) &
inline

Setter for IP-blocker.

Note
ip_blocker() method should be called if user specify its type for ip_blocker_t traits. For example:
...
public:
...
inspect(const restinio::ip_blocker::incoming_info_t & info) noexcept {
...
}
};
using ip_blocker_t = my_ip_blocker_t;
};
setting.ip_blocker( std::make_shared<my_ip_blocker_t>(...) );
...
An information about new incoming connection to be passed to IP-blocker object.
inspection_result_t
Enumeration of result of inspecting new incoming connection.
Attention
This method can't be called if the default no-op IP-blocker is used in server traits.
Since
v.0.5.1

Definition at line 1275 of file settings.hpp.

◆ ip_blocker() [3/3]

Derived && restinio::basic_server_settings_t< Derived, Traits >::ip_blocker ( std::shared_ptr< typename Traits::ip_blocker_t > blocker) &&
inline

Setter for IP-blocker.

Note
ip_blocker() method should be called if user specify its type for ip_blocker_t traits. For example:
...
public:
...
inspect(const restinio::ip_blocker::incoming_info_t & info) noexcept {
...
}
};
using ip_blocker_t = my_ip_blocker_t;
};
.ip_blocker( std::make_shared<my_ip_blocker_t>(...) )
.port(...)
...);
Derived & ip_blocker(std::shared_ptr< typename Traits::ip_blocker_t > blocker) &
Setter for IP-blocker.
Attention
This method can't be called if the default no-op state listener is used in server traits.
Since
v.0.5.1

Definition at line 1320 of file settings.hpp.

◆ logger() [1/3]

std::unique_ptr< logger_t > restinio::basic_server_settings_t< Derived, Traits >::logger ( )
inline

Definition at line 969 of file settings.hpp.

◆ logger() [2/3]

template<typename... Params>
Derived & restinio::basic_server_settings_t< Derived, Traits >::logger ( Params &&... params) &
inline

Definition at line 954 of file settings.hpp.

◆ logger() [3/3]

template<typename... Params>
Derived && restinio::basic_server_settings_t< Derived, Traits >::logger ( Params &&... params) &&
inline

Definition at line 963 of file settings.hpp.

◆ max_parallel_connections() [1/3]

std::size_t restinio::details::max_parallel_connections_holder_t< Count_Limiter >::max_parallel_connections ( ) const
inlinenoexcept

Definition at line 494 of file settings.hpp.

◆ max_parallel_connections() [2/3]

Derived && restinio::basic_server_settings_t< Derived, Traits >::max_parallel_connections ( std::size_t value) &&
inlinenoexcept

Setter for connection count limit.

Note
This setter can be called only if the usage of connection count limit is turned on explicitly.

Usage example:

static constexpr bool use_connection_count_limiter = true;
};
...
auto server = restinio::run_async(
...
std::thread::hardware_concurrency());
Derived & max_parallel_connections(std::size_t value) &noexcept
Setter for connection count limit.
Since
v.0.6.12

Definition at line 1574 of file settings.hpp.

◆ max_parallel_connections() [3/3]

Derived & restinio::basic_server_settings_t< Derived, Traits >::max_parallel_connections ( std::size_t value) &
inlinenoexcept

Setter for connection count limit.

Note
This setter can be called only if the usage of connection count limit is turned on explicitly.

Usage example:

static constexpr bool use_connection_count_limiter = true;
};
...
restinio::server_settings_t<my_traits> settings;
settings.max_parallel_connections( 1000u );
...
auto server = restinio::run_async(
std::move(settings),
std::thread::hardware_concurrency());
Since
v.0.6.12

Definition at line 1539 of file settings.hpp.

◆ max_pipelined_requests() [1/3]

std::size_t restinio::basic_server_settings_t< Derived, Traits >::max_pipelined_requests ( ) const
inline

Definition at line 835 of file settings.hpp.

◆ max_pipelined_requests() [2/3]

Derived & restinio::basic_server_settings_t< Derived, Traits >::max_pipelined_requests ( std::size_t mpr) &
inline

Max pipelined requests able to receive on single connection.

Definition at line 822 of file settings.hpp.

◆ max_pipelined_requests() [3/3]

Derived && restinio::basic_server_settings_t< Derived, Traits >::max_pipelined_requests ( std::size_t mpr) &&
inline

Definition at line 829 of file settings.hpp.

◆ port() [1/3]

std::uint16_t restinio::basic_server_settings_t< Derived, Traits >::port ( ) const
inline

Definition at line 599 of file settings.hpp.

◆ port() [2/3]

Derived & restinio::basic_server_settings_t< Derived, Traits >::port ( std::uint16_t p) &
inline

Server endpoint.

Definition at line 585 of file settings.hpp.

◆ port() [3/3]

Derived && restinio::basic_server_settings_t< Derived, Traits >::port ( std::uint16_t p) &&
inline

Definition at line 592 of file settings.hpp.

◆ protocol() [1/3]

asio_ns::ip::tcp restinio::basic_server_settings_t< Derived, Traits >::protocol ( ) const
inline

Definition at line 619 of file settings.hpp.

◆ protocol() [2/3]

Derived & restinio::basic_server_settings_t< Derived, Traits >::protocol ( asio_ns::ip::tcp p) &
inline

Definition at line 605 of file settings.hpp.

◆ protocol() [3/3]

Derived && restinio::basic_server_settings_t< Derived, Traits >::protocol ( asio_ns::ip::tcp p) &&
inline

Definition at line 612 of file settings.hpp.

◆ read_next_http_message_timelimit() [1/3]

std::chrono::steady_clock::duration restinio::basic_server_settings_t< Derived, Traits >::read_next_http_message_timelimit ( ) const
inline

Definition at line 769 of file settings.hpp.

◆ read_next_http_message_timelimit() [2/3]

Derived & restinio::basic_server_settings_t< Derived, Traits >::read_next_http_message_timelimit ( std::chrono::steady_clock::duration d) &
inline

}

A period for holding connection before completely receiving new http-request. Starts counting since connection is establised or a previous request was responsed.

Generaly it defines timeout for keep-alive connections.

Definition at line 756 of file settings.hpp.

◆ read_next_http_message_timelimit() [3/3]

Derived && restinio::basic_server_settings_t< Derived, Traits >::read_next_http_message_timelimit ( std::chrono::steady_clock::duration d) &&
inline

Definition at line 763 of file settings.hpp.

◆ reference_to_derived()

Derived & restinio::basic_server_settings_t< Derived, Traits >::reference_to_derived ( )
inlineprivate

Definition at line 1694 of file settings.hpp.

◆ request_handler() [1/4]

std::unique_ptr< request_handler_t > restinio::basic_server_settings_t< Derived, Traits >::request_handler ( )
inline

Definition at line 871 of file settings.hpp.

◆ request_handler() [2/4]

template<typename... Params>
Derived & restinio::basic_server_settings_t< Derived, Traits >::request_handler ( Params &&... params) &
inline

Definition at line 855 of file settings.hpp.

◆ request_handler() [3/4]

template<typename... Params>
Derived && restinio::basic_server_settings_t< Derived, Traits >::request_handler ( Params &&... params) &&
inline

Definition at line 865 of file settings.hpp.

◆ request_handler() [4/4]

Derived & restinio::basic_server_settings_t< Derived, Traits >::request_handler ( std::unique_ptr< request_handler_t > handler) &
inline

Definition at line 847 of file settings.hpp.

◆ separate_accept_and_create_connect() [1/3]

bool restinio::basic_server_settings_t< Derived, Traits >::separate_accept_and_create_connect ( ) const
inlinenoexcept

Definition at line 1090 of file settings.hpp.

◆ separate_accept_and_create_connect() [2/3]

Derived && restinio::basic_server_settings_t< Derived, Traits >::separate_accept_and_create_connect ( bool do_separate) &&
inlinenoexcept

Definition at line 1084 of file settings.hpp.

◆ separate_accept_and_create_connect() [3/3]

Derived & restinio::basic_server_settings_t< Derived, Traits >::separate_accept_and_create_connect ( bool do_separate) &
inlinenoexcept

Do separate an accept operation and connection instantiation.

For the cases when a lot of connection can be fired by clients in a short time interval, it is vital to accept connections and initiate new accept operations as quick as possible. So creating connection instance that involves allocations and initialization can be done in a context that is independent to acceptors one.

Definition at line 1077 of file settings.hpp.

◆ set_shared_instance()

template<typename Target , typename... Params>
Derived & restinio::basic_server_settings_t< Derived, Traits >::set_shared_instance ( std::shared_ptr< Target > & t,
Params &&... params )
inlineprivate

Definition at line 1712 of file settings.hpp.

◆ set_unique_instance()

template<typename Target , typename... Params>
Derived & restinio::basic_server_settings_t< Derived, Traits >::set_unique_instance ( std::unique_ptr< Target > & t,
Params &&... params )
inlineprivate

Definition at line 1701 of file settings.hpp.

◆ socket_options_setter() [1/3]

std::unique_ptr< socket_options_setter_t > restinio::basic_server_settings_t< Derived, Traits >::socket_options_setter ( )
inline

Definition at line 1025 of file settings.hpp.

◆ socket_options_setter() [2/3]

Definition at line 1008 of file settings.hpp.

◆ socket_options_setter() [3/3]

Derived && restinio::basic_server_settings_t< Derived, Traits >::socket_options_setter ( socket_options_setter_t sos) &&
inline

Definition at line 1019 of file settings.hpp.

◆ timer_factory()

std::unique_ptr< timer_factory_t > restinio::basic_server_settings_t< Derived, Traits >::timer_factory ( )
inline

Definition at line 940 of file settings.hpp.

◆ timer_manager() [1/2]

template<typename... Params>
Derived & restinio::basic_server_settings_t< Derived, Traits >::timer_manager ( Params &&... params) &
inline

Creates a factory object that will be used for creation of an actual timer_manager instance.

An instance of Traits::timer_manager_t::factory_t is created dynamically. All params are passed to std::make_unique call and will be forwarded to the constructor of timer_factory_t.

Usage example:

struct my_traits : public restinio::traits_t<
restinio::asio_timer_manager_t, my_logger >
{
using request_handler_t = ...; // Some request handler type.
};
...
restinio::run(
.port(8080)
.address("localhost")
.timer_manager(std::chrono::milliseconds{250})
Derived & timer_manager(Params &&... params) &
Creates a factory object that will be used for creation of an actual timer_manager instance.
Definition settings.hpp:918
request_handler_type_from_traits_t< Traits > request_handler_t
Request handler.
Definition settings.hpp:844

Definition at line 918 of file settings.hpp.

◆ timer_manager() [2/2]

template<typename... Params>
Derived && restinio::basic_server_settings_t< Derived, Traits >::timer_manager ( Params &&... params) &&
inline

Creates a factory object that will be used for creation of an actual timer_manager instance.

For more information and usage example see the documentation for another overload.

Definition at line 934 of file settings.hpp.

◆ write_http_response_timelimit() [1/3]

std::chrono::steady_clock::duration restinio::basic_server_settings_t< Derived, Traits >::write_http_response_timelimit ( ) const
inline

Definition at line 791 of file settings.hpp.

◆ write_http_response_timelimit() [2/3]

Derived & restinio::basic_server_settings_t< Derived, Traits >::write_http_response_timelimit ( std::chrono::steady_clock::duration d) &
inline

A period of time wait for response to be written to socket.

Definition at line 778 of file settings.hpp.

◆ write_http_response_timelimit() [3/3]

Derived && restinio::basic_server_settings_t< Derived, Traits >::write_http_response_timelimit ( std::chrono::steady_clock::duration d) &&
inline

Definition at line 785 of file settings.hpp.

Member Data Documentation

◆ has_actual_max_parallel_connections

constexpr bool restinio::details::max_parallel_connections_holder_t< Count_Limiter >::has_actual_max_parallel_connections
staticconstexprprivate

Definition at line 482 of file settings.hpp.

◆ m_acceptor_options_setter

std::unique_ptr< acceptor_options_setter_t > restinio::basic_server_settings_t< Derived, Traits >::m_acceptor_options_setter
private

Acceptor options setter.

Definition at line 1760 of file settings.hpp.

◆ m_acceptor_post_bind_hook

Initial value:
{
[](asio_ns::ip::tcp::acceptor &) {}
}

A hook to be called just after a successful call to bind for acceptor.

An empty lambda is used by default.

Since
v.0.6.11

Definition at line 1768 of file settings.hpp.

◆ m_address

Note
This member has type address_variant_t since v.0.6.11

Definition at line 1729 of file settings.hpp.

◆ m_buffer_size

std::size_t restinio::basic_server_settings_t< Derived, Traits >::m_buffer_size { 4 * 1024 }
private

Size of buffer for io operations.

Definition at line 1733 of file settings.hpp.

◆ m_cleanup_functor

Optional cleanup functor.

Definition at line 1781 of file settings.hpp.

◆ m_concurrent_accepts_count

std::size_t restinio::basic_server_settings_t< Derived, Traits >::m_concurrent_accepts_count { 1 }
private

Definition at line 1775 of file settings.hpp.

◆ m_extra_data_factory

User-data-factory for server.

Since
v.0.6.13

Definition at line 1795 of file settings.hpp.

◆ m_handle_request_timeout

std::chrono::steady_clock::duration restinio::basic_server_settings_t< Derived, Traits >::m_handle_request_timeout { std::chrono::seconds( 10 ) }
private

Definition at line 1744 of file settings.hpp.

◆ m_incoming_http_msg_limits

Limits for incoming HTTP messages.

Since
v.0.6.12

Definition at line 1788 of file settings.hpp.

◆ m_logger

std::unique_ptr< logger_t > restinio::basic_server_settings_t< Derived, Traits >::m_logger
private

Logger.

Definition at line 1757 of file settings.hpp.

◆ m_max_pipelined_requests

std::size_t restinio::basic_server_settings_t< Derived, Traits >::m_max_pipelined_requests { 1 }
private

Max pipelined requests to receive on single connection.

Definition at line 1748 of file settings.hpp.

◆ m_port

std::uint16_t restinio::basic_server_settings_t< Derived, Traits >::m_port
private

Server endpoint.

Definition at line 1723 of file settings.hpp.

◆ m_protocol

asio_ns::ip::tcp restinio::basic_server_settings_t< Derived, Traits >::m_protocol
private

Definition at line 1724 of file settings.hpp.

◆ m_read_next_http_message_timelimit

std::chrono::steady_clock::duration restinio::basic_server_settings_t< Derived, Traits >::m_read_next_http_message_timelimit { std::chrono::seconds( 60 ) }
private

Operations timeouts.

Definition at line 1738 of file settings.hpp.

◆ m_request_handler

std::unique_ptr< request_handler_t > restinio::basic_server_settings_t< Derived, Traits >::m_request_handler
private

Request handler.

Definition at line 1751 of file settings.hpp.

◆ m_separate_accept_and_create_connect

bool restinio::basic_server_settings_t< Derived, Traits >::m_separate_accept_and_create_connect { false }
private

Do separate an accept operation and connection instantiation.

Definition at line 1778 of file settings.hpp.

◆ m_socket_options_setter

std::unique_ptr< socket_options_setter_t > restinio::basic_server_settings_t< Derived, Traits >::m_socket_options_setter
private

Socket options setter.

Definition at line 1773 of file settings.hpp.

◆ m_timer_factory

std::unique_ptr< timer_factory_t > restinio::basic_server_settings_t< Derived, Traits >::m_timer_factory
private

Timers factory.

Definition at line 1754 of file settings.hpp.

◆ m_write_http_response_timelimit

std::chrono::steady_clock::duration restinio::basic_server_settings_t< Derived, Traits >::m_write_http_response_timelimit { std::chrono::seconds( 5 ) }
private

Definition at line 1741 of file settings.hpp.


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