xrpld
Loading...
Searching...
No Matches
abstract_clock.h
1#pragma once
2
3namespace beast {
4
34template <class Clock>
36{
37public:
38 using rep = Clock::rep;
39 using period = Clock::period;
40 using duration = Clock::duration;
41 using time_point = Clock::time_point;
42 using clock_type = Clock;
43
44 static bool const is_steady = Clock::is_steady; // NOLINT(readability-identifier-naming)
45
46 virtual ~AbstractClock() = default;
47 AbstractClock() = default;
48 AbstractClock(AbstractClock const&) = default;
49
53 [[nodiscard]] virtual time_point
54 now() const = 0;
55};
56
57//------------------------------------------------------------------------------
58
59namespace detail {
60
61template <class Facade, class Clock>
62struct AbstractClockWrapper : public AbstractClock<Facade>
63{
64 explicit AbstractClockWrapper() = default;
65
68
69 [[nodiscard]] time_point
70 now() const override
71 {
72 return Clock::now();
73 }
74};
75
76} // namespace detail
77
78//------------------------------------------------------------------------------
79
86template <class Facade, class Clock = Facade>
87AbstractClock<Facade>&
89{
91 return kClock;
92}
93
94} // 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.