/*
 *  Copyright 2008 The WebRTC Project Authors. All rights reserved.
 *
 *  Use of this source code is governed by a BSD-style license
 *  that can be found in the LICENSE file in the root of the source
 *  tree. An additional intellectual property rights grant can be found
 *  in the file PATENTS.  All contributing project authors may
 *  be found in the AUTHORS file in the root of the source tree.
 */

#ifndef WEBRTC_BASE_TIMING_H_
#define WEBRTC_BASE_TIMING_H_

namespace rtc {

// TODO(deadbeef): Remove this and use ClockInterface instead.
class Timing {
 public:
  Timing();
  virtual ~Timing();

  // WallTimeNow() returns the current wall-clock time in seconds,
  // within 10 milliseconds resolution.
  // WallTimeNow is static and does not require a timer_handle_ on Windows.
  static double WallTimeNow();

  // TimerNow() is like WallTimeNow(), but is monotonically
  // increasing.  It returns seconds in resolution of 10 microseconds
  // or better.  Although timer and wall-clock time have the same
  // timing unit, they do not necessarily correlate because wall-clock
  // time may be adjusted backwards, hence not monotonic.
  // Made virtual so we can make a fake one.
  // TODO(tommi): The only place we use this (virtual) is in
  // rtpdata_engine_unittest.cc.  See if it doesn't make more sense to change
  // that contract or test than to modify this generic class.
  virtual double TimerNow();
};

}  // namespace rtc

#endif // WEBRTC_BASE_TIMING_H_