17#ifndef KUDU_UTIL_MONOTIME_H
18#define KUDU_UTIL_MONOTIME_H
27#ifdef KUDU_HEADERS_NO_STUBS
28#include <gtest/gtest_prod.h>
30#include "kudu/gutil/port.h"
34#include "kudu/client/stubs.h"
37#include "kudu/util/kudu_export.h"
47#define KUDU_MONOTIME_NOEXCEPT noexcept
49#define KUDU_MONOTIME_NOEXCEPT
106 ATTRIBUTE_DEPRECATED(
"use operator<(const MonoDelta&, const MonoDelta&) instead");
117 ATTRIBUTE_DEPRECATED(
"use operator>(const MonoDelta&, const MonoDelta&) instead");
129 "use operator==(const MonoDelta&, const MonoDelta&) instead");
185 static const int64_t kUninitialized;
187 friend class MonoTime;
189 friend MonoDelta operator-(
const class MonoTime&,
const class MonoTime&);
192 friend class MonoTime operator-(const class MonoTime&,
const class MonoDelta&);
193 friend class MonoTime operator+(const class MonoTime&,
const class MonoDelta&);
198 FRIEND_TEST(TestMonoTime, TestDeltaConversions);
250 ATTRIBUTE_DEPRECATED(
"use std::min() instead");
270 "use kudu::operator-(const MonoTime&, const MonoTime&) instead");
278 void AddDelta(const MonoDelta& delta) ATTRIBUTE_DEPRECATED(
279 "use operator+=(const MonoDelta&) instead");
291 "use operator<(const MonoTime&, const MonoTime&) instead");
312 "use operator==(const MonoTime&, const MonoTime&) instead");
329 friend class MonoDelta;
336 FRIEND_TEST(TestMonoTime, TestTimeSpec);
337 FRIEND_TEST(TestMonoTime, TestDeltaConversions);
339 explicit
MonoTime(const struct timespec& ts) KUDU_MONOTIME_NOEXCEPT;
340 explicit
MonoTime(int64_t nanos) KUDU_MONOTIME_NOEXCEPT;
341 double ToSeconds() const;
355void KUDU_EXPORT SleepFor(const MonoDelta& delta);
366bool KUDU_EXPORT operator==(const MonoDelta& lhs, const MonoDelta& rhs);
374bool KUDU_EXPORT operator!=(const MonoDelta& lhs, const MonoDelta& rhs);
382bool KUDU_EXPORT operator<(const MonoDelta& lhs, const MonoDelta& rhs);
390bool KUDU_EXPORT operator<=(const MonoDelta& lhs, const MonoDelta& rhs);
398bool KUDU_EXPORT operator>(const MonoDelta& lhs, const MonoDelta& rhs);
406bool KUDU_EXPORT operator>=(const MonoDelta& lhs, const MonoDelta& rhs);
413MonoDelta KUDU_EXPORT operator-(const MonoDelta& lhs, const MonoDelta& rhs);
420MonoDelta KUDU_EXPORT operator+(const MonoDelta& lhs, const MonoDelta& rhs);
515MonoDelta KUDU_EXPORT operator-(const
MonoTime& t_end, const
MonoTime& t_begin);
530std::ostream& operator<<(std::ostream& os, const kudu::
MonoTime& time);
friend MonoDelta operator+(const MonoDelta &, const MonoDelta &)
int64_t ToNanoseconds() const
MonoDelta & operator-=(const MonoDelta &delta)
MonoDelta & operator+=(const MonoDelta &delta)
void ToTimeVal(struct timeval *tv) const
friend MonoDelta operator-(const MonoDelta &, const MonoDelta &)
int64_t ToMicroseconds() const
static void NanosToTimeSpec(int64_t nanos, struct timespec *ts)
bool LessThan(const MonoDelta &rhs) const
friend bool operator<(const MonoDelta &, const MonoDelta &)
friend bool operator>(const MonoDelta &, const MonoDelta &)
static MonoDelta FromSeconds(double seconds)
std::string ToString() const
int64_t ToMilliseconds() const
friend bool operator==(const MonoDelta &, const MonoDelta &)
static MonoDelta FromMilliseconds(int64_t ms)
static MonoDelta FromMicroseconds(int64_t us)
void ToTimeSpec(struct timespec *ts) const
bool MoreThan(const MonoDelta &rhs) const
static MonoDelta FromNanoseconds(int64_t ns)
bool Equals(const MonoDelta &rhs) const
bool ComesBefore(const MonoTime &rhs) const
void AddDelta(const MonoDelta &delta)
MonoTime() KUDU_MONOTIME_NOEXCEPT
bool Equals(const MonoTime &other) const
static const int64_t kNanosecondsPerSecond
Nanoseconds per second.
Definition monotime.h:217
std::string ToString() const
void ToTimeSpec(struct timespec *ts) const
static const int64_t kNanosecondsPerMicrosecond
Nanoseconds per microseconds.
Definition monotime.h:223
static const int64_t kNanosecondsPerMillisecond
Nanoseconds per millisecond.
Definition monotime.h:220
static const int64_t kMicrosecondsPerSecond
Microseconds per second.
Definition monotime.h:226
MonoDelta GetDeltaSince(const MonoTime &rhs) const
static const MonoTime & Earliest(const MonoTime &a, const MonoTime &b)