blob: e5aa3bc0a4fc3af0aecd8e58b395c54ce48f0d41 [file] [log] [blame]
Taylor Brandstetterb3c68102016-05-27 14:15:43 -07001/*
2 * Copyright 2016 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#include "webrtc/base/fakeclock.h"
12
13#include "webrtc/base/checks.h"
14#include "webrtc/base/messagequeue.h"
15
16namespace rtc {
17
18uint64_t FakeClock::TimeNanos() const {
19 CritScope cs(&lock_);
20 return time_;
21}
22
23void FakeClock::SetTimeNanos(uint64_t nanos) {
24 {
25 CritScope cs(&lock_);
26 RTC_DCHECK(nanos >= time_);
27 time_ = nanos;
28 }
29 // If message queues are waiting in a socket select() with a timeout provided
30 // by the OS, they should wake up to check if there are any messages ready to
31 // be dispatched based on the fake time.
32 MessageQueueManager::WakeAllMessageQueues();
33}
34
35void FakeClock::AdvanceTime(TimeDelta delta) {
36 CritScope cs(&lock_);
37 SetTimeNanos(time_ + delta.ToNanoseconds());
38}
39
40} // namespace rtc