26 virtual std::chrono::microseconds
Now()
const = 0;
34 std::chrono::microseconds
Now()
const override
36 return std::chrono::duration_cast<std::chrono::microseconds>(
37 std::chrono::steady_clock::now().time_since_epoch());
55 explicit ManualClock(std::chrono::microseconds start = std::chrono::microseconds(0))
56 : count(start.count())
60 std::chrono::microseconds
Now()
const override
62 return std::chrono::microseconds(this->count.load());
66 void Advance(std::chrono::microseconds delta)
70 throw std::runtime_error(
"ecs::ManualClock::Advance(): a clock cannot move backwards (" +
71 std::to_string(delta.count()) +
" us).");
73 this->count.fetch_add(delta.count());
77 void Set(std::chrono::microseconds value)
79 this->count.store(value.count());
83 std::atomic<int64_t> count;
A source of time for systems and containers.
Definition Clock.hpp:21
virtual std::chrono::microseconds Now() const =0
Time since the clock's starting point, in microseconds.
virtual ~Clock()=default
Destroys the clock.
A clock that only moves when told to, for tests.
Definition Clock.hpp:52
ManualClock(std::chrono::microseconds start=std::chrono::microseconds(0))
Creates a clock that reads the given time, zero by default.
Definition Clock.hpp:55
std::chrono::microseconds Now() const override
Time since the clock's starting point, in microseconds.
Definition Clock.hpp:60
void Advance(std::chrono::microseconds delta)
Moves time forward.
Definition Clock.hpp:66
void Set(std::chrono::microseconds value)
Sets the time.
Definition Clock.hpp:77
The real clock: std::chrono::steady_clock, truncated to whole microseconds.
Definition Clock.hpp:32
static const SteadyClock & Instance()
The shared instance, which lives until the process ends.
Definition Clock.hpp:41
std::chrono::microseconds Now() const override
Time since the clock's starting point, in microseconds.
Definition Clock.hpp:34