| Index: webrtc/api/rtcstatscollector.h
 | 
| diff --git a/webrtc/api/rtcstatscollector.h b/webrtc/api/rtcstatscollector.h
 | 
| deleted file mode 100644
 | 
| index c32d65f2460a83447946b70430b5bf1bc05b5074..0000000000000000000000000000000000000000
 | 
| --- a/webrtc/api/rtcstatscollector.h
 | 
| +++ /dev/null
 | 
| @@ -1,188 +0,0 @@
 | 
| -/*
 | 
| - *  Copyright 2016 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_API_RTCSTATSCOLLECTOR_H_
 | 
| -#define WEBRTC_API_RTCSTATSCOLLECTOR_H_
 | 
| -
 | 
| -#include <map>
 | 
| -#include <memory>
 | 
| -#include <set>
 | 
| -#include <vector>
 | 
| -
 | 
| -#include "webrtc/api/datachannel.h"
 | 
| -#include "webrtc/api/datachannelinterface.h"
 | 
| -#include "webrtc/api/stats/rtcstats_objects.h"
 | 
| -#include "webrtc/api/stats/rtcstatsreport.h"
 | 
| -#include "webrtc/base/asyncinvoker.h"
 | 
| -#include "webrtc/base/optional.h"
 | 
| -#include "webrtc/base/refcount.h"
 | 
| -#include "webrtc/base/scoped_ref_ptr.h"
 | 
| -#include "webrtc/base/sigslot.h"
 | 
| -#include "webrtc/base/sslidentity.h"
 | 
| -#include "webrtc/base/timeutils.h"
 | 
| -#include "webrtc/media/base/mediachannel.h"
 | 
| -
 | 
| -namespace cricket {
 | 
| -class Candidate;
 | 
| -}  // namespace cricket
 | 
| -
 | 
| -namespace rtc {
 | 
| -class SSLCertificate;
 | 
| -}  // namespace rtc
 | 
| -
 | 
| -namespace webrtc {
 | 
| -
 | 
| -class PeerConnection;
 | 
| -struct SessionStats;
 | 
| -
 | 
| -class RTCStatsCollectorCallback : public virtual rtc::RefCountInterface {
 | 
| - public:
 | 
| -  virtual ~RTCStatsCollectorCallback() {}
 | 
| -
 | 
| -  virtual void OnStatsDelivered(
 | 
| -      const rtc::scoped_refptr<const RTCStatsReport>& report) = 0;
 | 
| -};
 | 
| -
 | 
| -// All public methods of the collector are to be called on the signaling thread.
 | 
| -// Stats are gathered on the signaling, worker and network threads
 | 
| -// asynchronously. The callback is invoked on the signaling thread. Resulting
 | 
| -// reports are cached for |cache_lifetime_| ms.
 | 
| -class RTCStatsCollector : public virtual rtc::RefCountInterface,
 | 
| -                          public sigslot::has_slots<> {
 | 
| - public:
 | 
| -  static rtc::scoped_refptr<RTCStatsCollector> Create(
 | 
| -      PeerConnection* pc,
 | 
| -      int64_t cache_lifetime_us = 50 * rtc::kNumMicrosecsPerMillisec);
 | 
| -
 | 
| -  // Gets a recent stats report. If there is a report cached that is still fresh
 | 
| -  // it is returned, otherwise new stats are gathered and returned. A report is
 | 
| -  // considered fresh for |cache_lifetime_| ms. const RTCStatsReports are safe
 | 
| -  // to use across multiple threads and may be destructed on any thread.
 | 
| -  void GetStatsReport(rtc::scoped_refptr<RTCStatsCollectorCallback> callback);
 | 
| -  // Clears the cache's reference to the most recent stats report. Subsequently
 | 
| -  // calling |GetStatsReport| guarantees fresh stats.
 | 
| -  void ClearCachedStatsReport();
 | 
| -
 | 
| - protected:
 | 
| -  RTCStatsCollector(PeerConnection* pc, int64_t cache_lifetime_us);
 | 
| -
 | 
| -  // Stats gathering on a particular thread. Calls |AddPartialResults| before
 | 
| -  // returning. Virtual for the sake of testing.
 | 
| -  virtual void ProducePartialResultsOnSignalingThread(int64_t timestamp_us);
 | 
| -  virtual void ProducePartialResultsOnWorkerThread(int64_t timestamp_us);
 | 
| -  virtual void ProducePartialResultsOnNetworkThread(int64_t timestamp_us);
 | 
| -
 | 
| -  // Can be called on any thread.
 | 
| -  void AddPartialResults(
 | 
| -      const rtc::scoped_refptr<RTCStatsReport>& partial_report);
 | 
| -
 | 
| - private:
 | 
| -  struct CertificateStatsPair {
 | 
| -    std::unique_ptr<rtc::SSLCertificateStats> local;
 | 
| -    std::unique_ptr<rtc::SSLCertificateStats> remote;
 | 
| -  };
 | 
| -  struct MediaInfo {
 | 
| -    rtc::Optional<cricket::VoiceMediaInfo> voice;
 | 
| -    rtc::Optional<cricket::VideoMediaInfo> video;
 | 
| -  };
 | 
| -
 | 
| -  void AddPartialResults_s(rtc::scoped_refptr<RTCStatsReport> partial_report);
 | 
| -  void DeliverCachedReport();
 | 
| -
 | 
| -  // Produces |RTCCertificateStats|.
 | 
| -  void ProduceCertificateStats_s(
 | 
| -      int64_t timestamp_us,
 | 
| -      const std::map<std::string, CertificateStatsPair>& transport_cert_stats,
 | 
| -      RTCStatsReport* report) const;
 | 
| -  // Produces |RTCCodecStats|.
 | 
| -  void ProduceCodecStats_s(
 | 
| -      int64_t timestamp_us, const MediaInfo& media_info,
 | 
| -      RTCStatsReport* report) const;
 | 
| -  // Produces |RTCDataChannelStats|.
 | 
| -  void ProduceDataChannelStats_s(
 | 
| -      int64_t timestamp_us, RTCStatsReport* report) const;
 | 
| -  // Produces |RTCIceCandidatePairStats| and |RTCIceCandidateStats|.
 | 
| -  void ProduceIceCandidateAndPairStats_s(
 | 
| -      int64_t timestamp_us, const SessionStats& session_stats,
 | 
| -      RTCStatsReport* report) const;
 | 
| -  // Produces |RTCMediaStreamStats| and |RTCMediaStreamTrackStats|.
 | 
| -  void ProduceMediaStreamAndTrackStats_s(
 | 
| -      int64_t timestamp_us, RTCStatsReport* report) const;
 | 
| -  // Produces |RTCPeerConnectionStats|.
 | 
| -  void ProducePeerConnectionStats_s(
 | 
| -      int64_t timestamp_us, RTCStatsReport* report) const;
 | 
| -  // Produces |RTCInboundRTPStreamStats| and |RTCOutboundRTPStreamStats|.
 | 
| -  void ProduceRTPStreamStats_s(
 | 
| -      int64_t timestamp_us, const SessionStats& session_stats,
 | 
| -      const MediaInfo& media_info, RTCStatsReport* report) const;
 | 
| -  // Produces |RTCTransportStats|.
 | 
| -  void ProduceTransportStats_s(
 | 
| -      int64_t timestamp_us, const SessionStats& session_stats,
 | 
| -      const std::map<std::string, CertificateStatsPair>& transport_cert_stats,
 | 
| -      RTCStatsReport* report) const;
 | 
| -
 | 
| -  // Helper function to stats-producing functions.
 | 
| -  std::map<std::string, CertificateStatsPair>
 | 
| -  PrepareTransportCertificateStats(const SessionStats& session_stats) const;
 | 
| -  MediaInfo PrepareMediaInfo(const SessionStats& session_stats) const;
 | 
| -
 | 
| -  // Slots for signals (sigslot) that are wired up to |pc_|.
 | 
| -  void OnDataChannelCreated(DataChannel* channel);
 | 
| -  // Slots for signals (sigslot) that are wired up to |channel|.
 | 
| -  void OnDataChannelOpened(DataChannel* channel);
 | 
| -  void OnDataChannelClosed(DataChannel* channel);
 | 
| -
 | 
| -  PeerConnection* const pc_;
 | 
| -  rtc::Thread* const signaling_thread_;
 | 
| -  rtc::Thread* const worker_thread_;
 | 
| -  rtc::Thread* const network_thread_;
 | 
| -  rtc::AsyncInvoker invoker_;
 | 
| -
 | 
| -  int num_pending_partial_reports_;
 | 
| -  int64_t partial_report_timestamp_us_;
 | 
| -  rtc::scoped_refptr<RTCStatsReport> partial_report_;
 | 
| -  std::vector<rtc::scoped_refptr<RTCStatsCollectorCallback>> callbacks_;
 | 
| -
 | 
| -  // A timestamp, in microseconds, that is based on a timer that is
 | 
| -  // monotonically increasing. That is, even if the system clock is modified the
 | 
| -  // difference between the timer and this timestamp is how fresh the cached
 | 
| -  // report is.
 | 
| -  int64_t cache_timestamp_us_;
 | 
| -  int64_t cache_lifetime_us_;
 | 
| -  rtc::scoped_refptr<const RTCStatsReport> cached_report_;
 | 
| -
 | 
| -  // Data recorded and maintained by the stats collector during its lifetime.
 | 
| -  // Some stats are produced from this record instead of other components.
 | 
| -  struct InternalRecord {
 | 
| -    InternalRecord() : data_channels_opened(0),
 | 
| -                       data_channels_closed(0) {}
 | 
| -
 | 
| -    // The opened count goes up when a channel is fully opened and the closed
 | 
| -    // count goes up if a previously opened channel has fully closed. The opened
 | 
| -    // count does not go down when a channel closes, meaning (opened - closed)
 | 
| -    // is the number of channels currently opened. A channel that is closed
 | 
| -    // before reaching the open state does not affect these counters.
 | 
| -    uint32_t data_channels_opened;
 | 
| -    uint32_t data_channels_closed;
 | 
| -    // Identifies by address channels that have been opened, which remain in the
 | 
| -    // set until they have been fully closed.
 | 
| -    std::set<uintptr_t> opened_data_channels;
 | 
| -  };
 | 
| -  InternalRecord internal_record_;
 | 
| -};
 | 
| -
 | 
| -const char* CandidateTypeToRTCIceCandidateTypeForTesting(
 | 
| -    const std::string& type);
 | 
| -const char* DataStateToRTCDataChannelStateForTesting(
 | 
| -    DataChannelInterface::DataState state);
 | 
| -
 | 
| -}  // namespace webrtc
 | 
| -
 | 
| -#endif  // WEBRTC_API_RTCSTATSCOLLECTOR_H_
 | 
| 
 |