SObjectizer  5.7
Classes | Public Member Functions | Private Member Functions | List of all members
so_5::timer_manager_t Class Referenceabstract

Timer manager interface. More...

#include <timers.hpp>

Inheritance diagram for so_5::timer_manager_t:
so_5::timers_details::actual_manager_t< Timer_Manager >

Classes

class  elapsed_timers_collector_t
 An interface for collector of elapsed timers. More...
 

Public Member Functions

 timer_manager_t () noexcept=default
 
virtual ~timer_manager_t () noexcept=default
 
virtual void process_expired_timers ()=0
 Translation of expired timers into message sends. More...
 
virtual std::chrono::steady_clock::duration timeout_before_nearest_timer (std::chrono::steady_clock::duration default_timer)=0
 Calculate time before the nearest timer (if any). More...
 
virtual timer_id_t schedule (const std::type_index &type_index, const mbox_t &mbox, const message_ref_t &msg, std::chrono::steady_clock::duration pause, std::chrono::steady_clock::duration period)=0
 Push delayed/periodic message to the timer queue. More...
 
virtual void schedule_anonymous (const std::type_index &type_index, const mbox_t &mbox, const message_ref_t &msg, std::chrono::steady_clock::duration pause, std::chrono::steady_clock::duration period)=0
 Push anonymous delayed/periodic message to the timer queue. More...
 
virtual bool empty ()=0
 
virtual timer_thread_stats_t query_stats ()=0
 Get statistics for run-time monitoring. More...
 

Private Member Functions

 timer_manager_t (const timer_manager_t &)=delete
 
timer_manager_toperator= (const timer_manager_t &)=delete
 

Detailed Description

Timer manager interface.

Interface for all implementations of timer_managers.

Timer managers do not create externals threads and must not use any mutexs/spinlocks inside. All work must be done only on the context of the caller thread.

Since
v.5.5.19

Constructor & Destructor Documentation

◆ timer_manager_t() [1/2]

so_5::timer_manager_t::timer_manager_t ( const timer_manager_t )
privatedelete

◆ timer_manager_t() [2/2]

so_5::timer_manager_t::timer_manager_t ( )
defaultnoexcept

◆ ~timer_manager_t()

virtual so_5::timer_manager_t::~timer_manager_t ( )
virtualdefaultnoexcept

Member Function Documentation

◆ empty()

virtual bool so_5::timer_manager_t::empty ( )
pure virtual
Returns
true if there is no any pending timers.

Implemented in so_5::timers_details::actual_manager_t< Timer_Manager >.

◆ operator=()

timer_manager_t& so_5::timer_manager_t::operator= ( const timer_manager_t )
privatedelete

◆ process_expired_timers()

virtual void so_5::timer_manager_t::process_expired_timers ( )
pure virtual

Translation of expired timers into message sends.

Implemented in so_5::timers_details::actual_manager_t< Timer_Manager >.

◆ query_stats()

virtual timer_thread_stats_t so_5::timer_manager_t::query_stats ( )
pure virtual

Get statistics for run-time monitoring.

Since
v.5.5.4

Implemented in so_5::timers_details::actual_manager_t< Timer_Manager >.

◆ schedule()

virtual timer_id_t so_5::timer_manager_t::schedule ( const std::type_index &  type_index,
const mbox_t mbox,
const message_ref_t msg,
std::chrono::steady_clock::duration  pause,
std::chrono::steady_clock::duration  period 
)
pure virtual

Push delayed/periodic message to the timer queue.

A timer can be deactivated later by using returned timer_id.

Parameters
type_indexType of message to be sheduled.
mboxMbox for message delivery.
msgMessage to be sent.
pausePause before first message delivery.
periodPeriod for message repetition. Zero value means single shot delivery.

Implemented in so_5::timers_details::actual_manager_t< Timer_Manager >.

◆ schedule_anonymous()

virtual void so_5::timer_manager_t::schedule_anonymous ( const std::type_index &  type_index,
const mbox_t mbox,
const message_ref_t msg,
std::chrono::steady_clock::duration  pause,
std::chrono::steady_clock::duration  period 
)
pure virtual

Push anonymous delayed/periodic message to the timer queue.

A timer cannot be deactivated later.

Parameters
type_indexType of message to be sheduled.
mboxMbox for message delivery.
msgMessage to be sent.
pausePause before first message delivery.
periodPeriod for message repetition. Zero value means single shot delivery.

Implemented in so_5::timers_details::actual_manager_t< Timer_Manager >.

◆ timeout_before_nearest_timer()

virtual std::chrono::steady_clock::duration so_5::timer_manager_t::timeout_before_nearest_timer ( std::chrono::steady_clock::duration  default_timer)
pure virtual

Calculate time before the nearest timer (if any).

Return timeout before the nearest timer or default_timeout if there is no any timer.

Parameters
default_timerDefault timeout if there is no any timer.

Implemented in so_5::timers_details::actual_manager_t< Timer_Manager >.


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