Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(335)

Unified Diff: webrtc/api/rtcstatscollector.cc

Issue 2420473002: RTCDataChannelStats added. (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/api/rtcstatscollector.cc
diff --git a/webrtc/api/rtcstatscollector.cc b/webrtc/api/rtcstatscollector.cc
index 5f60ea13cecadb7defc5169701e06a2d7308dc26..5d7804e893b4b35446811d557424cc807bc8e47f 100644
--- a/webrtc/api/rtcstatscollector.cc
+++ b/webrtc/api/rtcstatscollector.cc
@@ -36,6 +36,23 @@ const char* CandidateTypeToRTCIceCandidateType(const std::string& type) {
return nullptr;
}
+const char* DataStateToRTCDataChannelState(
+ DataChannelInterface::DataState state) {
+ switch (state) {
+ case DataChannelInterface::kConnecting:
+ return RTCDataChannelState::kConnecting;
+ case DataChannelInterface::kOpen:
+ return RTCDataChannelState::kOpen;
+ case DataChannelInterface::kClosing:
+ return RTCDataChannelState::kClosing;
+ case DataChannelInterface::kClosed:
+ return RTCDataChannelState::kClosed;
+ default:
+ RTC_NOTREACHED();
+ return nullptr;
+ }
+}
+
rtc::scoped_refptr<RTCStatsCollector> RTCStatsCollector::Create(
PeerConnection* pc, int64_t cache_lifetime_us) {
return rtc::scoped_refptr<RTCStatsCollector>(
@@ -111,6 +128,7 @@ void RTCStatsCollector::ProducePartialResultsOnSignalingThread(
ProduceIceCandidateAndPairStats_s(timestamp_us, session_stats,
report.get());
}
+ ProduceDataChannelStats_s(timestamp_us, report.get());
ProducePeerConnectionStats_s(timestamp_us, report.get());
AddPartialResults(report);
@@ -218,6 +236,29 @@ void RTCStatsCollector::ProduceCertificateStatsFromSSLCertificateAndChain_s(
}
}
+void RTCStatsCollector::ProduceDataChannelStats_s(
+ int64_t timestamp_us, RTCStatsReport* report) const {
+ RTC_DCHECK(signaling_thread_->IsCurrent());
+ const std::vector<rtc::scoped_refptr<DataChannel>>& data_channels =
+ pc_->sctp_data_channels();
+ for (const rtc::scoped_refptr<DataChannel>& data_channel : data_channels) {
+ std::unique_ptr<RTCDataChannelStats> data_channel_stats(
+ new RTCDataChannelStats(
+ "RTCDataChannel_" + rtc::ToString<>(data_channel->id()),
+ timestamp_us));
+ data_channel_stats->label = data_channel->label();
+ data_channel_stats->protocol = data_channel->protocol();
+ data_channel_stats->datachannelid = data_channel->id();
+ data_channel_stats->state =
+ DataStateToRTCDataChannelState(data_channel->state());
+ data_channel_stats->messages_sent = data_channel->messages_sent();
+ data_channel_stats->bytes_sent = data_channel->bytes_sent();
+ data_channel_stats->messages_received = data_channel->messages_received();
+ data_channel_stats->bytes_received = data_channel->bytes_received();
+ report->AddStats(std::move(data_channel_stats));
+ }
+}
+
void RTCStatsCollector::ProduceIceCandidateAndPairStats_s(
int64_t timestamp_us, const SessionStats& session_stats,
RTCStatsReport* report) const {

Powered by Google App Engine
This is Rietveld 408576698