blob: a73c57d986c02b041e2f2b8413fb45b9461e7425 [file] [log] [blame]
henrike@webrtc.orgf0488722014-05-13 18:00:26 +00001/*
2 * Copyright 2008 The WebRTC Project Authors. All rights reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11#ifndef WEBRTC_BASE_TIMING_H_
12#define WEBRTC_BASE_TIMING_H_
13
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000014namespace rtc {
15
Taylor Brandstetterb3c68102016-05-27 14:15:43 -070016// TODO(deadbeef): Remove this and use ClockInterface instead.
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000017class Timing {
18 public:
19 Timing();
20 virtual ~Timing();
21
22 // WallTimeNow() returns the current wall-clock time in seconds,
23 // within 10 milliseconds resolution.
tommi@webrtc.orgecb87232014-07-08 12:48:29 +000024 // WallTimeNow is static and does not require a timer_handle_ on Windows.
25 static double WallTimeNow();
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000026
27 // TimerNow() is like WallTimeNow(), but is monotonically
28 // increasing. It returns seconds in resolution of 10 microseconds
29 // or better. Although timer and wall-clock time have the same
30 // timing unit, they do not necessarily correlate because wall-clock
31 // time may be adjusted backwards, hence not monotonic.
32 // Made virtual so we can make a fake one.
tommi7d0d0e02016-01-25 03:09:29 -080033 // TODO(tommi): The only place we use this (virtual) is in
34 // rtpdata_engine_unittest.cc. See if it doesn't make more sense to change
35 // that contract or test than to modify this generic class.
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000036 virtual double TimerNow();
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000037};
38
39} // namespace rtc
40
41#endif // WEBRTC_BASE_TIMING_H_