1#include <xrpl/beast/clock/basic_seconds_clock.h>
2#include <xrpl/beast/utility/instrumentation.h>
15class seconds_clock_thread
26 ~seconds_clock_thread();
27 seconds_clock_thread();
39seconds_clock_thread::~seconds_clock_thread()
43 "beast::seconds_clock_thread::~seconds_clock_thread : thread joinable");
52seconds_clock_thread::seconds_clock_thread()
53 : stop_{false}, tp_{Clock::now().time_since_epoch().
count()}
55 thread_ =
std::thread(&seconds_clock_thread::run,
this);
58seconds_clock_thread::Clock::time_point
59seconds_clock_thread::now()
61 return Clock::time_point{Clock::duration{tp_.load()}};
65seconds_clock_thread::run()
72 auto now = Clock::now();
73 tp_ = now.time_since_epoch().count();
74 auto const when = floor<seconds>(now) + 1s;
75 if (cv_.
wait_until(lock, when, [
this] { return stop_; }))
82basic_seconds_clock::time_point
83basic_seconds_clock::now()
85 static seconds_clock_thread clk;
std::chrono::steady_clock Clock
int run(int argc, char **argv)