11 #include <restinio/asio_include.hpp> 13 #include <so_5/all.hpp> 26 struct msg_ckeck_timer_t
final :
public so_5::message_t
40 class so_timer_manager_t
final 44 so_5::environment_t & env,
46 std::chrono::steady_clock::duration check_period )
53 class timer_guard_t
final 57 so_5::environment_t & env,
59 std::chrono::steady_clock::duration check_period )
67 schedule( tcp_connection_ctx_weak_handle_t weak_handle )
69 if( !m_current_op_timer.is_active() )
72 std::make_unique< msg_ckeck_timer_t >( std::move( weak_handle ) );
87 m_current_op_timer.release();
103 return timer_guard_t{ m_env, m_mbox, m_check_period };
119 so_5::environment_t & env,
121 std::chrono::steady_clock::duration check_period =
std::
chrono::
seconds{ 1 } )
130 return std::make_shared< so_timer_manager_t >( m_env, m_mbox, m_check_period );
145 class a_timeout_handler_t
final 146 :
public so_5::agent_t
156 [](
const msg_ckeck_timer_t & msg ){
157 if(
auto h = msg.m_weak_handle.lock() )
158 h->check_timeout( h );
timer_guard_t(so_5::environment_t &env, so_5::mbox_t mbox, std::chrono::steady_clock::duration check_period)
so_5::environment_t & m_env
const std::chrono::steady_clock::duration m_check_period
const std::chrono::steady_clock::duration m_check_period
so_5::environment_t & m_env
so_timer_manager_t(so_5::environment_t &env, so_5::mbox_t mbox, std::chrono::steady_clock::duration check_period)
so_5::environment_t & m_env
msg_ckeck_timer_t(tcp_connection_ctx_weak_handle_t weak_handle)
a_timeout_handler_t(context_t ctx)
void start() const
Start/stop timer manager.
so_5::agent_t so_base_type_t
const so_5::mbox_t m_mbox
timer_guard_t create_timer_guard()
void schedule(tcp_connection_ctx_weak_handle_t weak_handle)
Schedule timeout check invocation.
auto create(asio_ns::io_context &) const
const std::chrono::steady_clock::duration m_check_period
so_5::timer_id_t m_current_op_timer
factory_t(so_5::environment_t &env, so_5::mbox_t mbox, std::chrono::steady_clock::duration check_period=std::chrono::seconds{ 1 })
tcp_connection_ctx_weak_handle_t m_weak_handle
std::enable_if< std::is_same< Parameter_Container, query_string_params_t >::value||std::is_same< Parameter_Container, router::route_params_t >::value, optional_t< Value_Type > >::type opt_value(const Parameter_Container ¶ms, string_view_t key)
Gets the value of a parameter specified by key wrapped in optional_t<Value_Type> if parameter exists ...