typedef duration::period period;
// The second template parameter defaults to the clock's duration
// type.
- typedef std::chrono::time_point<real_clock> time_point;
+ typedef std::chrono::time_point<coarse_real_clock> time_point;
static constexpr const bool is_steady = false;
static time_point now() noexcept {
typedef timespan duration;
typedef duration::rep rep;
typedef duration::period period;
- typedef std::chrono::time_point<mono_clock> time_point;
+ typedef std::chrono::time_point<coarse_mono_clock> time_point;
static constexpr const bool is_steady = true;
static time_point now() noexcept {
// Actual wall-clock times
typedef real_clock::time_point real_time;
+ typedef coarse_real_clock::time_point coarse_real_time;
// Monotonic times should never be serialized or communicated
// between machines, since they are incomparable. Thus we also don't
// make any provision for converting between
// std::chrono::steady_clock time and ceph::mono_clock time.
typedef mono_clock::time_point mono_time;
+ typedef coarse_mono_clock::time_point coarse_mono_time;
template<typename Rep1, typename Ratio1, typename Rep2, typename Ratio2>
auto floor(const std::chrono::duration<Rep1, Ratio1>& duration,
std::ostream& operator<<(std::ostream& m, const timespan& t);
std::ostream& operator<<(std::ostream& m, const real_time& t);
std::ostream& operator<<(std::ostream& m, const mono_time& t);
+
+ // To gain sane behavior with signs
} // namespace ceph
// We need these definitions to be able to hande ::encode/::decode on