xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
include
xrpl
beast
clock
manual_clock.h
1
#pragma once
2
3
#include <xrpl/beast/clock/abstract_clock.h>
4
#include <xrpl/beast/utility/instrumentation.h>
5
6
#include <
chrono
>
7
8
namespace
beast
{
9
20
template
<
class
Clock>
21
class
ManualClock
:
public
AbstractClock
<Clock>
22
{
23
public
:
24
using
typename
AbstractClock<Clock>::rep
;
25
using
typename
AbstractClock<Clock>::duration
;
26
using
typename
AbstractClock<Clock>::time_point
;
27
28
private
:
29
time_point
now_
;
30
31
public
:
32
explicit
ManualClock
(
time_point
const
&
now
=
time_point
(
duration
(0))) :
now_
(
now
)
33
{
34
}
35
36
[[nodiscard]]
time_point
37
now
()
const override
38
{
39
return
now_
;
40
}
41
45
void
46
set
(
time_point
const
& when)
47
{
48
XRPL_ASSERT(
49
!Clock::is_steady || when >=
now_
,
50
"beast::ManualClock::set(time_point) : forward input"
);
51
now_
= when;
52
}
53
57
template
<
class
Integer>
58
void
59
set
(Integer secondsFromEpoch)
60
{
61
set
(
time_point
(
duration
(
std::chrono::seconds
(secondsFromEpoch))));
62
}
63
67
template
<
class
Rep,
class
Period>
68
void
69
advance
(
std::chrono::duration<Rep, Period>
const
& elapsed)
70
{
71
XRPL_ASSERT(
72
!Clock::is_steady || (
now_
+ elapsed) >=
now_
,
73
"beast::ManualClock::advance(duration) : forward input"
);
74
now_
+= elapsed;
75
}
76
80
ManualClock
&
81
operator++
()
82
{
83
advance
(
std::chrono::seconds
(1));
84
return
*
this
;
85
}
86
};
87
88
}
// namespace beast
chrono
beast::AbstractClock::duration
Clock::duration duration
Definition
abstract_clock.h:40
beast::AbstractClock::rep
Clock::rep rep
Definition
abstract_clock.h:38
beast::AbstractClock::time_point
Clock::time_point time_point
Definition
abstract_clock.h:41
beast::AbstractClock::AbstractClock
AbstractClock()=default
beast::ManualClock
Manual clock implementation.
Definition
manual_clock.h:22
beast::ManualClock::set
void set(Integer secondsFromEpoch)
Convenience for setting the time in seconds from epoch.
Definition
manual_clock.h:59
beast::ManualClock::ManualClock
ManualClock(time_point const &now=time_point(duration(0)))
Definition
manual_clock.h:32
beast::ManualClock::set
void set(time_point const &when)
Set the current time of the manual clock.
Definition
manual_clock.h:46
beast::ManualClock< std::chrono::steady_clock >::now_
time_point now_
Definition
manual_clock.h:29
beast::ManualClock::advance
void advance(std::chrono::duration< Rep, Period > const &elapsed)
Advance the clock by a duration.
Definition
manual_clock.h:69
beast::ManualClock::operator++
ManualClock & operator++()
Convenience for advancing the clock by one second.
Definition
manual_clock.h:81
beast::ManualClock< std::chrono::steady_clock >::now
time_point now() const override
Definition
manual_clock.h:37
std::chrono::seconds
beast
Definition
base_uint.h:697
Generated by
1.17.0