34 #ifndef OTBR_COMMON_TIME_HPP_
35 #define OTBR_COMMON_TIME_HPP_
47 using Seconds = std::chrono::seconds;
48 using Milliseconds = std::chrono::milliseconds;
49 using Microseconds = std::chrono::microseconds;
50 using Clock = std::chrono::steady_clock;
51 using Timepoint = Clock::time_point;
53 template <
class D> D FromTimeval(
const timeval &aTime)
55 return std::chrono::duration_cast<D>(Microseconds{aTime.tv_usec}) +
56 std::chrono::duration_cast<D>(Seconds{aTime.tv_sec});
59 template <
class D> timeval ToTimeval(
const D &aDuration)
62 const size_t kMicrosecondsPeriod = 1000000;
63 auto microseconds = std::chrono::duration_cast<Microseconds>(aDuration).count();
65 ret.tv_sec = microseconds / kMicrosecondsPeriod;
66 ret.tv_usec = microseconds % kMicrosecondsPeriod;
73 #endif // OTBR_COMMON_TIME_HPP_