RESTinio
|
Context for handling http connections. More...
#include <connection.hpp>
Classes | |
struct | upgrade_internals_t |
Internals that are necessary for upgrade. More... | |
Public Types | |
using | timer_manager_t = typename Traits::timer_manager_t |
using | timer_guard_t = typename timer_manager_t::timer_guard_t |
using | request_handler_t = request_handler_type_from_traits_t< Traits > |
using | generic_request_t = generic_request_type_from_traits_t< Traits > |
using | logger_t = typename Traits::logger_t |
using | strand_t = typename Traits::strand_t |
using | stream_socket_t = typename Traits::stream_socket_t |
using | lifetime_monitor_t |
Private Member Functions | |
void | consume_message () |
Start (continue) a chain of read-parse-read-... operations. | |
void | after_read (const asio_ns::error_code &ec, std::size_t length) noexcept |
Handle read operation result. | |
void | consume_data (const char *data, std::size_t length) |
Parse some data. | |
void | on_request_message_complete () |
Handle a given request message. | |
void | handle_upgrade_request () |
Calls handler for upgrade request. | |
virtual void | write_response_parts (request_id_t request_id, response_output_flags_t response_output_flags, write_group_t wg) override |
Write parts for specified request. | |
void | write_response_parts_impl (request_id_t request_id, response_output_flags_t response_output_flags, write_group_t wg) |
Write parts for specified request. | |
void | init_write_if_necessary () |
void | init_write () |
Initiate write operation. | |
void | handle_current_write_ctx () noexcept |
Start/continue/continue handling output data of current write group. | |
void | handle_trivial_write_operation (const trivial_write_operation_t &op) |
Run trivial buffers write operation. | |
void | handle_file_write_operation (file_write_operation_t &op) |
Run sendfile write operation. | |
void | finish_handling_current_write_ctx () |
Do post write actions for current write group. | |
void | handle_nothing_to_write () |
void | after_write (const asio_ns::error_code &ec) noexcept |
Handle write response finished. | |
void | close () noexcept |
Close connection functions. | |
template<typename Message_Builder > | |
void | trigger_error_and_close (Message_Builder msg_builder) noexcept |
Trigger an error. | |
Private Attributes | |
stream_socket_t | m_socket |
Connection. | |
connection_settings_handle_t< Traits > | m_settings |
Common paramaters of a connection. | |
const endpoint_t | m_remote_endpoint |
Remote endpoint for this connection. | |
connection_input_t | m_input |
Input routine. | |
write_group_output_ctx_t | m_write_output_ctx |
Write to socket operation context. | |
bool | m_init_read_after_this_write { false } |
response_coordinator_t | m_response_coordinator |
Response coordinator. | |
request_handler_t & | m_request_handler |
Request handler. | |
logger_t & | m_logger |
Logger for operation. | |
lifetime_monitor_t | m_lifetime_monitor |
Monitor of the connection lifetime. | |
using | timout_cb_t = void (connection_t::* )( void ) |
Callback type for timedout operations. | |
timout_cb_t | m_current_timeout_cb { nullptr } |
Callback to all if timeout happened. | |
std::chrono::steady_clock::time_point | m_current_timeout_after |
Timeout point of a current guarded operation. | |
timer_guard_t | m_timer_guard |
Timer guard. | |
tcp_connection_ctx_weak_handle_t | m_prepared_weak_ctx |
A prepared weak handle for passing it to timer guard. | |
virtual void | check_timeout (tcp_connection_ctx_handle_t &self) override |
Schedules real timedout operations check on the executer of a connection. | |
void | check_timeout_impl () |
Check timed out operation. | |
void | init_next_timeout_checking () |
Schedule next timeout checking. | |
void | cancel_timeout_checking () noexcept |
Stop timout guarding. | |
void | schedule_operation_timeout_callback (std::chrono::steady_clock::time_point timeout_after, timout_cb_t timout_cb) |
Helper function to work with timer guard. | |
void | schedule_operation_timeout_callback (std::chrono::steady_clock::duration timeout, timout_cb_t timout_cb) |
void | handle_xxx_timeout (const char *operation_name) |
void | handle_read_timeout () |
void | guard_read_operation () |
Statr guard read operation if necessary. | |
void | handle_request_handling_timeout () |
void | guard_request_handling_operation () |
Start guard request handling operation if necessary. | |
void | handle_write_response_timeout () |
void | guard_write_operation () |
Start guard write operation if necessary. | |
void | handle_sendfile_timeout () |
void | guard_sendfile_operation (std::chrono::steady_clock::duration timelimit) |
static connection_t & | cast_to_self (tcp_connection_ctx_base_t &base) |
Timer to controll operations. | |
Additional Inherited Members | |
![]() | |
template<typename Derived > | |
std::shared_ptr< Derived > | shared_from_concrete () |
Cast self to derived class. | |
Context for handling http connections.
Definition at line 350 of file connection.hpp.
|
private |
Definition at line 354 of file connection.hpp.
|
private |
Definition at line 1163 of file connection.hpp.
using restinio::impl::connection_t< Traits >::generic_request_t = generic_request_type_from_traits_t< Traits > |
Definition at line 360 of file connection.hpp.
using restinio::impl::connection_t< Traits >::lifetime_monitor_t |
Definition at line 364 of file connection.hpp.
using restinio::impl::connection_t< Traits >::logger_t = typename Traits::logger_t |
Definition at line 361 of file connection.hpp.
|
private |
Definition at line 1161 of file connection.hpp.
using restinio::impl::connection_t< Traits >::request_handler_t = request_handler_type_from_traits_t< Traits > |
Definition at line 359 of file connection.hpp.
using restinio::impl::connection_t< Traits >::strand_t = typename Traits::strand_t |
Definition at line 362 of file connection.hpp.
using restinio::impl::connection_t< Traits >::stream_socket_t = typename Traits::stream_socket_t |
Definition at line 363 of file connection.hpp.
using restinio::impl::connection_t< Traits >::timer_guard_t = typename timer_manager_t::timer_guard_t |
Definition at line 358 of file connection.hpp.
using restinio::impl::connection_t< Traits >::timer_manager_t = typename Traits::timer_manager_t |
Definition at line 357 of file connection.hpp.
|
private |
Callback type for timedout operations.
Definition at line 1664 of file connection.hpp.
|
private |
Definition at line 1162 of file connection.hpp.
|
inline |
conn_id | Connection id. |
socket | Connection socket. |
settings | Settings that are common for connections. |
remote_endpoint | Remote endpoint for that connection. |
lifetime_monitor | Lifetime monitor to be used for handling connection count. |
Definition at line 367 of file connection.hpp.
|
delete |
|
delete |
|
inlineoverride |
Definition at line 410 of file connection.hpp.
|
inlineprivatenoexcept |
Handle read operation result.
Definition at line 564 of file connection.hpp.
|
inlineprivatenoexcept |
Handle write response finished.
Definition at line 1473 of file connection.hpp.
|
inlineprivatenoexcept |
Stop timout guarding.
Definition at line 1700 of file connection.hpp.
|
inlinestaticprivate |
Timer to controll operations.
Check timeouts for all activities.
Definition at line 1627 of file connection.hpp.
|
inlineoverrideprivatevirtual |
Schedules real timedout operations check on the executer of a connection.
Definition at line 1635 of file connection.hpp.
|
inlineprivate |
Check timed out operation.
Definition at line 1678 of file connection.hpp.
|
inlineprivatenoexcept |
|
inlineprivate |
Parse some data.
Definition at line 637 of file connection.hpp.
|
inlineprivate |
Start (continue) a chain of read-parse-read-... operations.
Definition at line 526 of file connection.hpp.
|
inlineprivate |
Do post write actions for current write group.
Definition at line 1365 of file connection.hpp.
|
inlineprivate |
Statr guard read operation if necessary.
Definition at line 1747 of file connection.hpp.
|
inlineprivate |
Start guard request handling operation if necessary.
Definition at line 1765 of file connection.hpp.
|
inlineprivate |
Definition at line 1797 of file connection.hpp.
|
inlineprivate |
Start guard write operation if necessary.
Definition at line 1783 of file connection.hpp.
|
inlineprivatenoexcept |
Start/continue/continue handling output data of current write group.
This function is a starting point of a loop process of sending data from a given write group. It extracts the next bunch of trivial buffers or a sendfile-runner and starts an appropriate write operation. In data of a given write group finishes, finish_handling_current_write_ctx() is invoked thus breaking the loop.
Definition at line 1178 of file connection.hpp.
|
inlineprivate |
Run sendfile write operation.
Definition at line 1279 of file connection.hpp.
|
inlineprivate |
Definition at line 1426 of file connection.hpp.
|
inlineprivate |
Definition at line 1740 of file connection.hpp.
|
inlineprivate |
Definition at line 1758 of file connection.hpp.
|
inlineprivate |
Definition at line 1791 of file connection.hpp.
|
inlineprivate |
Run trivial buffers write operation.
Definition at line 1212 of file connection.hpp.
|
inlineprivate |
Calls handler for upgrade request.
Request data must be in input context (m_input).
Definition at line 852 of file connection.hpp.
|
inlineprivate |
Definition at line 1776 of file connection.hpp.
|
inlineprivate |
Definition at line 1727 of file connection.hpp.
|
inline |
Definition at line 422 of file connection.hpp.
|
inlineprivate |
Schedule next timeout checking.
Definition at line 1693 of file connection.hpp.
|
inlineprivate |
Initiate write operation.
Definition at line 1092 of file connection.hpp.
|
inlineprivate |
Definition at line 1080 of file connection.hpp.
|
inline |
Move socket out of connection.
Definition at line 514 of file connection.hpp.
|
inlineprivate |
Handle a given request message.
Definition at line 715 of file connection.hpp.
|
delete |
|
delete |
|
inlineprivate |
Definition at line 1717 of file connection.hpp.
|
inlineprivate |
Helper function to work with timer guard.
Definition at line 1708 of file connection.hpp.
|
inlineprivatenoexcept |
Trigger an error.
Closes the connection and write to log an error message.
Definition at line 1590 of file connection.hpp.
|
inline |
Start reading next htttp-message.
Definition at line 460 of file connection.hpp.
|
inlineoverrideprivatevirtual |
Write parts for specified request.
Run write message on io_context loop if possible.
request_id | Request id. |
response_output_flags | Resp output flag. |
wg | Part of the response data. |
Implements restinio::impl::connection_base_t.
Definition at line 943 of file connection.hpp.
|
inlineprivate |
Write parts for specified request.
request_id | Request id. |
response_output_flags | Resp output flag. |
wg | Part of the response data. |
Definition at line 984 of file connection.hpp.
|
private |
Timeout point of a current guarded operation.
Definition at line 1670 of file connection.hpp.
|
private |
Callback to all if timeout happened.
Definition at line 1667 of file connection.hpp.
|
private |
Definition at line 1617 of file connection.hpp.
|
private |
Input routine.
Definition at line 1611 of file connection.hpp.
|
private |
Monitor of the connection lifetime.
It's required for controlling the count of active parallel connections.
Definition at line 1822 of file connection.hpp.
|
private |
Logger for operation.
Definition at line 1812 of file connection.hpp.
|
private |
A prepared weak handle for passing it to timer guard.
Definition at line 1674 of file connection.hpp.
|
private |
Remote endpoint for this connection.
Definition at line 1608 of file connection.hpp.
|
private |
Request handler.
Definition at line 1809 of file connection.hpp.
|
private |
Response coordinator.
Definition at line 1620 of file connection.hpp.
|
private |
Common paramaters of a connection.
Definition at line 1605 of file connection.hpp.
|
private |
Connection.
Definition at line 1602 of file connection.hpp.
|
private |
Timer guard.
Definition at line 1672 of file connection.hpp.
|
private |
Write to socket operation context.
Definition at line 1614 of file connection.hpp.