18069771cSKrzysztof Grobelny #pragma once 28069771cSKrzysztof Grobelny 38069771cSKrzysztof Grobelny #include "interfaces/clock.hpp" 4*51f0fd50SKrzysztof Grobelny #include "types/duration_types.hpp" 58069771cSKrzysztof Grobelny 68069771cSKrzysztof Grobelny #include <chrono> 78069771cSKrzysztof Grobelny 88069771cSKrzysztof Grobelny class Clock : public interfaces::Clock 98069771cSKrzysztof Grobelny { 108069771cSKrzysztof Grobelny public: steadyTimestamp() const11*51f0fd50SKrzysztof Grobelny Milliseconds steadyTimestamp() const noexcept override 128069771cSKrzysztof Grobelny { 13*51f0fd50SKrzysztof Grobelny return std::chrono::time_point_cast<Milliseconds>( 14*51f0fd50SKrzysztof Grobelny std::chrono::steady_clock::now()) 15*51f0fd50SKrzysztof Grobelny .time_since_epoch(); 168069771cSKrzysztof Grobelny } 178069771cSKrzysztof Grobelny systemTimestamp() const18*51f0fd50SKrzysztof Grobelny Milliseconds systemTimestamp() const noexcept override 198069771cSKrzysztof Grobelny { 20*51f0fd50SKrzysztof Grobelny return std::chrono::time_point_cast<Milliseconds>( 21*51f0fd50SKrzysztof Grobelny std::chrono::system_clock::now()) 22*51f0fd50SKrzysztof Grobelny .time_since_epoch(); 238069771cSKrzysztof Grobelny } 248069771cSKrzysztof Grobelny }; 25