Template Class timed_base¶
Defined in File timed_base.hpp
Inheritance Relationships¶
Derived Types¶
public stream_client::resolver::base_resolver< protocol_type >(Template Class base_resolver)public stream_client::base_socket< boost::asio::basic_datagram_socket< Protocol > >(Template Class base_socket)public stream_client::base_socket< boost::asio::basic_stream_socket< Protocol > >(Template Class base_socket)public stream_client::base_socket< Socket >(Template Class base_socket)public stream_client::resolver::base_resolver< Protocol >(Template Class base_resolver)
Class Documentation¶
-
template<typename
Clock>
classstream_client::detail::timed_base¶ Base class with timeout handling.
This class implements basic setup/reset for internal timer instance. Instances of this class own boost::asio::io_service and boost::asio::basic_waitable_timer via std::unique_ptr. Inherited classes should implement deadline_actor() which is called when timer goes off.
Note
This class does neither run nor poll its’ io_service, it is up to descendants.
- tparam Clock
type of clock to use, see boost::asio::basic_waitable_timer
Subclassed by stream_client::resolver::base_resolver< protocol_type >, stream_client::base_socket< boost::asio::basic_datagram_socket< Protocol > >, stream_client::base_socket< boost::asio::basic_stream_socket< Protocol > >, stream_client::base_socket< Socket >, stream_client::resolver::base_resolver< Protocol >
Public Types
-
using
time_duration_type= typename clock_type::duration¶
-
using
time_point_type= typename clock_type::time_point¶
-
using
timer_type= typename boost::asio::basic_waitable_timer<clock_type>¶
Public Functions
-
inline
timed_base()¶ Default constructor.
-
timed_base(const timed_base<Clock> &other) = delete¶ Copy constructor is not permitted.
-
timed_base<Clock> &
operator=(const timed_base<Clock> &other) = delete¶ Copy assignment is not permitted.
-
timed_base(timed_base<Clock> &&other) = default¶ Move constructor.
-
timed_base &
operator=(timed_base<Clock> &&other) = default¶ Move assignment.
-
inline virtual
~timed_base()¶ Destructor.
-
inline boost::asio::io_service &
get_io_service()¶ Non-const accessor to owned boost::asio::io_service.
-
inline const boost::asio::io_service &
get_io_service() const¶ Const accessor to owned boost::asio::io_service.
-
template<typename
Time>
inline expirationscope_expire(const Time &timeout_or_deadline)¶ Setup expiration and return its’ handler.
- Template Parameters
Time – Type of
timeout_or_deadline, either time_duration_type or time_point_type.- Parameters
[in] timeout_or_deadline – Expiration time-point.
- Returns
expiration RAII-complaint expiration handler - reset timer on destruction
Public Static Attributes
-
static constexpr time_duration_type
kInfiniteDuration= time_duration_type::max()¶ Indefinite duration.
-
static constexpr time_duration_type
kZeroDuration= time_duration_type(0)¶ Zero span duration.
-
static constexpr time_duration_type
kDurationResolution= time_duration_type(1000)¶ Minimal resolvable duration (anything else may be less than timeout setup overhead)
-
static constexpr time_duration_type
kMinTimeout= 2 * kDurationResolution¶ Minimal timeout = 2 x kDurationResolution.
Protected Functions
-
virtual void
deadline_actor() = 0¶ To-be implemented timer handler. Called if timer goes past expiration point.
Protected Attributes
-
bool
deadline_fired_¶ Set before deadline_actor() called.
-
class
expiration¶ RAII wrapper to set timer expiration.
Public Functions
-
inline
expiration(timer_type *timer = nullptr)¶
-
inline
expiration(timer_type *timer, const time_duration_type &duration)¶
-
inline
expiration(timer_type *timer, const time_point_type &deadline)¶
-
expiration(const expiration &other) = default¶
-
inline
expiration(expiration &&other) noexcept¶
-
inline expiration &
operator=(const expiration &other) = default¶
-
inline expiration &
operator=(expiration &&other) noexcept¶
-
inline
~expiration()¶
-
inline