Index: webrtc/api/rtcstatscollector.h |
diff --git a/webrtc/api/rtcstatscollector.h b/webrtc/api/rtcstatscollector.h |
index c32d65f2460a83447946b70430b5bf1bc05b5074..7b23d247264222151215b0c7425434d5df93d0b9 100644 |
--- a/webrtc/api/rtcstatscollector.h |
+++ b/webrtc/api/rtcstatscollector.h |
@@ -41,6 +41,7 @@ namespace webrtc { |
class PeerConnection; |
struct SessionStats; |
+struct ChannelNamePairs; |
class RTCStatsCollectorCallback : public virtual rtc::RefCountInterface { |
public: |
@@ -97,19 +98,19 @@ class RTCStatsCollector : public virtual rtc::RefCountInterface, |
void DeliverCachedReport(); |
// Produces |RTCCertificateStats|. |
- void ProduceCertificateStats_s( |
+ void ProduceCertificateStats_n( |
int64_t timestamp_us, |
const std::map<std::string, CertificateStatsPair>& transport_cert_stats, |
RTCStatsReport* report) const; |
// Produces |RTCCodecStats|. |
- void ProduceCodecStats_s( |
+ void ProduceCodecStats_n( |
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( |
+ void ProduceIceCandidateAndPairStats_n( |
int64_t timestamp_us, const SessionStats& session_stats, |
RTCStatsReport* report) const; |
// Produces |RTCMediaStreamStats| and |RTCMediaStreamTrackStats|. |
@@ -119,19 +120,19 @@ class RTCStatsCollector : public virtual rtc::RefCountInterface, |
void ProducePeerConnectionStats_s( |
int64_t timestamp_us, RTCStatsReport* report) const; |
// Produces |RTCInboundRTPStreamStats| and |RTCOutboundRTPStreamStats|. |
- void ProduceRTPStreamStats_s( |
+ void ProduceRTPStreamStats_n( |
int64_t timestamp_us, const SessionStats& session_stats, |
const MediaInfo& media_info, RTCStatsReport* report) const; |
// Produces |RTCTransportStats|. |
- void ProduceTransportStats_s( |
+ void ProduceTransportStats_n( |
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; |
+ PrepareTransportCertificateStats_n(const SessionStats& session_stats) const; |
+ std::unique_ptr<MediaInfo> PrepareMediaInfo_s() const; |
// Slots for signals (sigslot) that are wired up to |pc_|. |
void OnDataChannelCreated(DataChannel* channel); |
@@ -150,6 +151,13 @@ class RTCStatsCollector : public virtual rtc::RefCountInterface, |
rtc::scoped_refptr<RTCStatsReport> partial_report_; |
std::vector<rtc::scoped_refptr<RTCStatsCollectorCallback>> callbacks_; |
+ // Set in |GetStatsReport|, used in |ProducePartialResultsOnNetworkThread| |
+ // (not passed as arguments to avoid copies). This is thread safe - it is set |
+ // at the start of |GetStatsReport| after making sure there are no pending |
+ // stats requests in progress. |
+ std::unique_ptr<ChannelNamePairs> channel_name_pairs_; |
+ std::unique_ptr<MediaInfo> media_info_; |
+ |
// 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 |