| 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 #ifndef WEBRTC_API_RTCSTATSREPORT_H_ | 11 // TODO(hbos): Remove this file once Chromium uses the correct include path. | 
| 12 #define WEBRTC_API_RTCSTATSREPORT_H_ |  | 
| 13 | 12 | 
| 14 #include <map> | 13 #include "webrtc/api/stats/rtcstatsreport.h" | 
| 15 #include <memory> |  | 
| 16 #include <string> |  | 
| 17 #include <vector> |  | 
| 18 |  | 
| 19 #include "webrtc/api/rtcstats.h" |  | 
| 20 #include "webrtc/base/refcount.h" |  | 
| 21 #include "webrtc/base/scoped_ref_ptr.h" |  | 
| 22 |  | 
| 23 namespace webrtc { |  | 
| 24 |  | 
| 25 // A collection of stats. |  | 
| 26 // This is accessible as a map from |RTCStats::id| to |RTCStats|. |  | 
| 27 class RTCStatsReport : public rtc::RefCountInterface { |  | 
| 28  public: |  | 
| 29   typedef std::map<std::string, std::unique_ptr<const RTCStats>> StatsMap; |  | 
| 30 |  | 
| 31   class ConstIterator { |  | 
| 32    public: |  | 
| 33     ConstIterator(const ConstIterator&& other); |  | 
| 34     ~ConstIterator(); |  | 
| 35 |  | 
| 36     ConstIterator& operator++(); |  | 
| 37     ConstIterator& operator++(int); |  | 
| 38     const RTCStats& operator*() const; |  | 
| 39     bool operator==(const ConstIterator& other) const; |  | 
| 40     bool operator!=(const ConstIterator& other) const; |  | 
| 41 |  | 
| 42    private: |  | 
| 43     friend class RTCStatsReport; |  | 
| 44     ConstIterator(const rtc::scoped_refptr<const RTCStatsReport>& report, |  | 
| 45                   StatsMap::const_iterator it); |  | 
| 46 |  | 
| 47     // Reference report to make sure it is kept alive. |  | 
| 48     rtc::scoped_refptr<const RTCStatsReport> report_; |  | 
| 49     StatsMap::const_iterator it_; |  | 
| 50   }; |  | 
| 51 |  | 
| 52   static rtc::scoped_refptr<RTCStatsReport> Create(); |  | 
| 53 |  | 
| 54   RTCStatsReport(); |  | 
| 55   RTCStatsReport(const RTCStatsReport& other) = delete; |  | 
| 56 |  | 
| 57   bool AddStats(std::unique_ptr<const RTCStats> stats); |  | 
| 58   const RTCStats* Get(const std::string& id) const; |  | 
| 59   size_t size() const { return stats_.size(); } |  | 
| 60 |  | 
| 61   // Takes ownership of all the stats in |victim|, leaving it empty. |  | 
| 62   void TakeMembersFrom(rtc::scoped_refptr<RTCStatsReport> victim); |  | 
| 63 |  | 
| 64   // Stats iterators. Stats are ordered lexicographically on |RTCStats::id|. |  | 
| 65   ConstIterator begin() const; |  | 
| 66   ConstIterator end() const; |  | 
| 67 |  | 
| 68   // Gets the subset of stats that are of type |T|, where |T| is any class |  | 
| 69   // descending from |RTCStats|. |  | 
| 70   template<typename T> |  | 
| 71   std::vector<const T*> GetStatsOfType() const { |  | 
| 72     std::vector<const T*> stats_of_type; |  | 
| 73     for (const RTCStats& stats : *this) { |  | 
| 74       if (stats.type() == T::kType) |  | 
| 75         stats_of_type.push_back(&stats.cast_to<const T>()); |  | 
| 76     } |  | 
| 77     return stats_of_type; |  | 
| 78   } |  | 
| 79 |  | 
| 80   friend class rtc::RefCountedObject<RTCStatsReport>; |  | 
| 81 |  | 
| 82  private: |  | 
| 83   ~RTCStatsReport() override; |  | 
| 84 |  | 
| 85   StatsMap stats_; |  | 
| 86 }; |  | 
| 87 |  | 
| 88 }  // namespace webrtc |  | 
| 89 |  | 
| 90 #endif  // WEBRTC_API_RTCSTATSREPORT_H_ |  | 
| OLD | NEW | 
|---|