// Copyright 2020 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef TPM_MANAGER_SERVER_PASSIVE_TIMER_H_
#define TPM_MANAGER_SERVER_PASSIVE_TIMER_H_

#include <base/time/time.h>

// This simple class is a a configurable and resettable
// timer. By "passive" it means the timer itself doesn't actively fire any
// event; the user has to check if the time is up by calling
// |TimeRemaining|.
// Note that initially the timer is up by design. One can call |Reset| if
// they wants the timer to count down from the beginning.
class PassiveTimer {
 public:
  // Constructor that initialize its period.
  explicit PassiveTimer(const base::TimeDelta& period) : period_(period) {}
  ~PassiveTimer() = default;

  // Returns the time remaining since last reset. The returned value is
  // saturated to 0.; that is, the return value never goes negative.
  base::TimeDelta TimeRemaining() const {
    if (last_tick_.is_null()) {
      return base::TimeDelta();
    }
    auto now = base::TimeTicks::Now();
    base::TimeTicks uptime = last_tick_ + period_;
    return now < uptime ? uptime - now : base::TimeDelta();
  }
  // Restarts the timer so it starts to count down from the specified |period_|
  // again.
  void Reset() { last_tick_ = base::TimeTicks::Now(); }

 private:
  // The period of the timer.
  base::TimeDelta period_;
  // Records the time when the most recent call of |Reset|.
  base::TimeTicks last_tick_;
};

#endif  // TPM_MANAGER_SERVER_PASSIVE_TIMER_H_
