LCOV - code coverage report
Current view: top level - media/webrtc/trunk/webrtc/system_wrappers/include - clock.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 2 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 3 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :  *  Copyright (c) 2013 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_SYSTEM_WRAPPERS_INCLUDE_CLOCK_H_
      12             : #define WEBRTC_SYSTEM_WRAPPERS_INCLUDE_CLOCK_H_
      13             : 
      14             : #include <memory>
      15             : 
      16             : #include "webrtc/system_wrappers/include/rw_lock_wrapper.h"
      17             : #include "webrtc/typedefs.h"
      18             : 
      19             : namespace webrtc {
      20             : 
      21             : // January 1970, in NTP seconds.
      22             : const uint32_t kNtpJan1970 = 2208988800UL;
      23             : 
      24             : // Magic NTP fractional unit.
      25             : const double kMagicNtpFractionalUnit = 4.294967296E+9;
      26             : 
      27             : // A clock interface that allows reading of absolute and relative timestamps.
      28           0 : class Clock {
      29             :  public:
      30           0 :   virtual ~Clock() {}
      31             : 
      32             :   // Return a timestamp in milliseconds relative to some arbitrary source; the
      33             :   // source is fixed for this clock.
      34             :   virtual int64_t TimeInMilliseconds() const = 0;
      35             : 
      36             :   // Return a timestamp in microseconds relative to some arbitrary source; the
      37             :   // source is fixed for this clock.
      38             :   virtual int64_t TimeInMicroseconds() const = 0;
      39             : 
      40             :   // Retrieve an NTP absolute timestamp in seconds and fractions of a second.
      41             :   virtual void CurrentNtp(uint32_t& seconds, uint32_t& fractions) const = 0;
      42             : 
      43             :   // Retrieve an NTP absolute timestamp in milliseconds.
      44             :   virtual int64_t CurrentNtpInMilliseconds() const = 0;
      45             : 
      46             :   // Converts an NTP timestamp to a millisecond timestamp.
      47             :   static int64_t NtpToMs(uint32_t seconds, uint32_t fractions);
      48             : 
      49             :   // Returns an instance of the real-time system clock implementation.
      50             :   static Clock* GetRealTimeClock();
      51             : };
      52             : 
      53             : class SimulatedClock : public Clock {
      54             :  public:
      55             :   explicit SimulatedClock(int64_t initial_time_us);
      56             : 
      57             :   ~SimulatedClock() override;
      58             : 
      59             :   // Return a timestamp in milliseconds relative to some arbitrary source; the
      60             :   // source is fixed for this clock.
      61             :   int64_t TimeInMilliseconds() const override;
      62             : 
      63             :   // Return a timestamp in microseconds relative to some arbitrary source; the
      64             :   // source is fixed for this clock.
      65             :   int64_t TimeInMicroseconds() const override;
      66             : 
      67             :   // Retrieve an NTP absolute timestamp in milliseconds.
      68             :   void CurrentNtp(uint32_t& seconds, uint32_t& fractions) const override;
      69             : 
      70             :   // Converts an NTP timestamp to a millisecond timestamp.
      71             :   int64_t CurrentNtpInMilliseconds() const override;
      72             : 
      73             :   // Advance the simulated clock with a given number of milliseconds or
      74             :   // microseconds.
      75             :   void AdvanceTimeMilliseconds(int64_t milliseconds);
      76             :   void AdvanceTimeMicroseconds(int64_t microseconds);
      77             : 
      78             :  private:
      79             :   int64_t time_us_;
      80             :   std::unique_ptr<RWLockWrapper> lock_;
      81             : };
      82             : 
      83             : };  // namespace webrtc
      84             : 
      85             : #endif  // WEBRTC_SYSTEM_WRAPPERS_INCLUDE_CLOCK_H_

Generated by: LCOV version 1.13