| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2016 The WebRTC Project Authors. All rights reserved. | 2 * Copyright 2016 The WebRTC Project Authors. All rights reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 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 | 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 | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| 11 #include "webrtc/stats/rtcstatscollector.h" | 11 #include "webrtc/stats/rtcstatscollector.h" |
| 12 | 12 |
| 13 #include <memory> | 13 #include <memory> |
| 14 #include <utility> | 14 #include <utility> |
| 15 #include <vector> | 15 #include <vector> |
| 16 | 16 |
| 17 #include "webrtc/api/peerconnection.h" | 17 #include "webrtc/api/peerconnection.h" |
| 18 #include "webrtc/base/checks.h" | 18 #include "webrtc/base/checks.h" |
| 19 #include "webrtc/base/timing.h" | |
| 20 | 19 |
| 21 namespace webrtc { | 20 namespace webrtc { |
| 22 | 21 |
| 23 rtc::scoped_refptr<RTCStatsCollector> RTCStatsCollector::Create( | 22 rtc::scoped_refptr<RTCStatsCollector> RTCStatsCollector::Create( |
| 24 PeerConnection* pc, int64_t cache_lifetime_us) { | 23 PeerConnection* pc, int64_t cache_lifetime_us) { |
| 25 return rtc::scoped_refptr<RTCStatsCollector>( | 24 return rtc::scoped_refptr<RTCStatsCollector>( |
| 26 new rtc::RefCountedObject<RTCStatsCollector>(pc, cache_lifetime_us)); | 25 new rtc::RefCountedObject<RTCStatsCollector>(pc, cache_lifetime_us)); |
| 27 } | 26 } |
| 28 | 27 |
| 29 RTCStatsCollector::RTCStatsCollector(PeerConnection* pc, | 28 RTCStatsCollector::RTCStatsCollector(PeerConnection* pc, |
| (...skipping 26 matching lines...) Expand all Loading... |
| 56 // We have a fresh cached report to deliver. | 55 // We have a fresh cached report to deliver. |
| 57 DeliverCachedReport(); | 56 DeliverCachedReport(); |
| 58 } else if (!num_pending_partial_reports_) { | 57 } else if (!num_pending_partial_reports_) { |
| 59 // Only start gathering stats if we're not already gathering stats. In the | 58 // Only start gathering stats if we're not already gathering stats. In the |
| 60 // case of already gathering stats, |callback_| will be invoked when there | 59 // case of already gathering stats, |callback_| will be invoked when there |
| 61 // are no more pending partial reports. | 60 // are no more pending partial reports. |
| 62 | 61 |
| 63 // "Now" using a system clock, relative to the UNIX epoch (Jan 1, 1970, | 62 // "Now" using a system clock, relative to the UNIX epoch (Jan 1, 1970, |
| 64 // UTC), in microseconds. The system clock could be modified and is not | 63 // UTC), in microseconds. The system clock could be modified and is not |
| 65 // necessarily monotonically increasing. | 64 // necessarily monotonically increasing. |
| 66 int64_t timestamp_us = static_cast<int64_t>( | 65 int64_t timestamp_us = rtc::TimeUTCMicros(); |
| 67 rtc::Timing::WallTimeNow() * rtc::kNumMicrosecsPerSec); | |
| 68 | 66 |
| 69 num_pending_partial_reports_ = 3; | 67 num_pending_partial_reports_ = 3; |
| 70 partial_report_timestamp_us_ = cache_now_us; | 68 partial_report_timestamp_us_ = cache_now_us; |
| 71 invoker_.AsyncInvoke<void>(RTC_FROM_HERE, signaling_thread_, | 69 invoker_.AsyncInvoke<void>(RTC_FROM_HERE, signaling_thread_, |
| 72 rtc::Bind(&RTCStatsCollector::ProducePartialResultsOnSignalingThread, | 70 rtc::Bind(&RTCStatsCollector::ProducePartialResultsOnSignalingThread, |
| 73 rtc::scoped_refptr<RTCStatsCollector>(this), timestamp_us)); | 71 rtc::scoped_refptr<RTCStatsCollector>(this), timestamp_us)); |
| 74 invoker_.AsyncInvoke<void>(RTC_FROM_HERE, worker_thread_, | 72 invoker_.AsyncInvoke<void>(RTC_FROM_HERE, worker_thread_, |
| 75 rtc::Bind(&RTCStatsCollector::ProducePartialResultsOnWorkerThread, | 73 rtc::Bind(&RTCStatsCollector::ProducePartialResultsOnWorkerThread, |
| 76 rtc::scoped_refptr<RTCStatsCollector>(this), timestamp_us)); | 74 rtc::scoped_refptr<RTCStatsCollector>(this), timestamp_us)); |
| 77 invoker_.AsyncInvoke<void>(RTC_FROM_HERE, network_thread_, | 75 invoker_.AsyncInvoke<void>(RTC_FROM_HERE, network_thread_, |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 172 // constant. | 170 // constant. |
| 173 std::unique_ptr<RTCPeerConnectionStats> stats( | 171 std::unique_ptr<RTCPeerConnectionStats> stats( |
| 174 new RTCPeerConnectionStats("RTCPeerConnection", timestamp_us)); | 172 new RTCPeerConnectionStats("RTCPeerConnection", timestamp_us)); |
| 175 stats->data_channels_opened = data_channels_opened; | 173 stats->data_channels_opened = data_channels_opened; |
| 176 stats->data_channels_closed = static_cast<uint32_t>(data_channels.size()) - | 174 stats->data_channels_closed = static_cast<uint32_t>(data_channels.size()) - |
| 177 data_channels_opened; | 175 data_channels_opened; |
| 178 return stats; | 176 return stats; |
| 179 } | 177 } |
| 180 | 178 |
| 181 } // namespace webrtc | 179 } // namespace webrtc |
| OLD | NEW |