rippled
Loading...
Searching...
No Matches
abstract_clock.h
1#pragma once
2
3namespace beast {
4
33template <class Clock>
35{
36public:
37 using rep = typename Clock::rep;
38 using period = typename Clock::period;
39 using duration = typename Clock::duration;
40 using time_point = typename Clock::time_point;
41 using clock_type = Clock;
42
43 static bool const is_steady = Clock::is_steady;
44
45 virtual ~abstract_clock() = default;
46 abstract_clock() = default;
47 abstract_clock(abstract_clock const&) = default;
48
50 [[nodiscard]] virtual time_point
51 now() const = 0;
52};
53
54//------------------------------------------------------------------------------
55
56namespace detail {
57
58template <class Facade, class Clock>
60{
61 explicit abstract_clock_wrapper() = default;
62
65
67 now() const override
68 {
69 return Clock::now();
70 }
71};
72
73} // namespace detail
74
75//------------------------------------------------------------------------------
76
82template <class Facade, class Clock = Facade>
83abstract_clock<Facade>&
85{
87 return clock;
88}
89
90} // namespace beast
Abstract interface to a clock.
typename Clock::rep rep
typename Clock::time_point time_point
static bool const is_steady
virtual ~abstract_clock()=default
typename Clock::period period
virtual time_point now() const =0
Returns the current time.
typename Clock::duration duration
abstract_clock(abstract_clock const &)=default
abstract_clock< Facade > & get_abstract_clock()
Returns a global instance of an abstract clock.
time_point now() const override
Returns the current time.