| 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 {
|
|
|