xref: /openbmc/telemetry/src/utils/clock.hpp (revision 51f0fd501f4b772533271d15cb27d396186a7192)
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