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