#ifndef ABSL_TIME_CLOCK_INTERFACE_H_
#define ABSL_TIME_CLOCK_INTERFACE_H_
#include "absl/base/config.h"
#include "absl/base/macros.h"
#include "absl/base/nullability.h"
#include "absl/synchronization/mutex.h"
#include "absl/time/time.h"
namespace absl {
ABSL_NAMESPACE_BEGIN
class Clock {
public:
static Clock& GetRealClock();
virtual ~Clock();
virtual absl::Time TimeNow() = 0;
virtual void Sleep(absl::Duration d) = 0;
virtual void SleepUntil(absl::Time wakeup_time) = 0;
virtual bool AwaitWithDeadline(absl::Mutex* absl_nonnull mu,
const absl::Condition& cond,
absl::Time deadline) = 0;
};
ABSL_NAMESPACE_END
}
#endif