Index: webrtc/api/webrtcsession.cc |
diff --git a/webrtc/api/webrtcsession.cc b/webrtc/api/webrtcsession.cc |
index c5582d3630b7ebdc0644f5a6738ff2bc540d6127..99f2cd1a438c0d6ae7f5fbe78efe68884ebc0bfd 100644 |
--- a/webrtc/api/webrtcsession.cc |
+++ b/webrtc/api/webrtcsession.cc |
@@ -627,6 +627,24 @@ void WebRtcSession::Close() { |
media_controller_->Close(); |
} |
+std::unique_ptr<ChannelNamePairs> WebRtcSession::GetChannelNamePairs() { |
+ ASSERT(signaling_thread()->IsCurrent()); |
+ std::unique_ptr<ChannelNamePairs> channel_name_pairs(new ChannelNamePairs()); |
+ if (voice_channel()) { |
+ channel_name_pairs->voice = rtc::Optional<ChannelNamePair>(ChannelNamePair( |
+ voice_channel()->content_name(), voice_channel()->transport_name())); |
+ } |
+ if (video_channel()) { |
+ channel_name_pairs->video = rtc::Optional<ChannelNamePair>(ChannelNamePair( |
+ video_channel()->content_name(), video_channel()->transport_name())); |
+ } |
+ if (data_channel()) { |
+ channel_name_pairs->data = rtc::Optional<ChannelNamePair>(ChannelNamePair( |
+ data_channel()->content_name(), data_channel()->transport_name())); |
+ } |
+ return channel_name_pairs; |
+} |
+ |
cricket::BaseChannel* WebRtcSession::GetChannel( |
const std::string& content_name) { |
if (voice_channel() && voice_channel()->content_name() == content_name) { |
@@ -1039,6 +1057,46 @@ bool WebRtcSession::GetChannelTransportStats(cricket::BaseChannel* ch, |
return true; |
} |
+std::unique_ptr<SessionStats> WebRtcSession::GetSessionStats_n( |
+ const ChannelNamePairs& channel_name_pairs) { |
+ ASSERT(network_thread()->IsCurrent()); |
+ std::unique_ptr<SessionStats> session_stats(new SessionStats()); |
+ if (channel_name_pairs.voice) { |
+ cricket::TransportStats voice_transport_stats; |
+ if (!transport_controller_->GetStats_n( |
+ channel_name_pairs.voice->transport_name, &voice_transport_stats)) { |
+ return nullptr; |
+ } |
+ session_stats->proxy_to_transport[channel_name_pairs.voice->content_name] = |
+ channel_name_pairs.voice->transport_name; |
+ session_stats->transport_stats[channel_name_pairs.voice->transport_name] = |
+ std::move(voice_transport_stats); |
+ } |
+ if (channel_name_pairs.video) { |
+ cricket::TransportStats video_transport_stats; |
+ if (!transport_controller_->GetStats_n( |
+ channel_name_pairs.video->transport_name, &video_transport_stats)) { |
+ return nullptr; |
+ } |
+ session_stats->proxy_to_transport[channel_name_pairs.video->content_name] = |
+ channel_name_pairs.video->transport_name; |
+ session_stats->transport_stats[channel_name_pairs.video->transport_name] = |
+ std::move(video_transport_stats); |
+ } |
+ if (channel_name_pairs.data) { |
+ cricket::TransportStats data_transport_stats; |
+ if (!transport_controller_->GetStats_n( |
+ channel_name_pairs.data->transport_name, &data_transport_stats)) { |
+ return nullptr; |
+ } |
+ session_stats->proxy_to_transport[channel_name_pairs.data->content_name] = |
+ channel_name_pairs.data->transport_name; |
+ session_stats->transport_stats[channel_name_pairs.data->transport_name] = |
+ std::move(data_transport_stats); |
+ } |
+ return session_stats; |
+} |
+ |
bool WebRtcSession::GetLocalCertificate( |
const std::string& transport_name, |
rtc::scoped_refptr<rtc::RTCCertificate>* certificate) { |
@@ -1047,12 +1105,26 @@ bool WebRtcSession::GetLocalCertificate( |
certificate); |
} |
+bool WebRtcSession::GetLocalCertificate_n( |
+ const std::string& transport_name, |
+ rtc::scoped_refptr<rtc::RTCCertificate>* certificate) { |
+ ASSERT(network_thread()->IsCurrent()); |
+ return transport_controller_->GetLocalCertificate_n(transport_name, |
+ certificate); |
+} |
+ |
std::unique_ptr<rtc::SSLCertificate> WebRtcSession::GetRemoteSSLCertificate( |
const std::string& transport_name) { |
ASSERT(signaling_thread()->IsCurrent()); |
return transport_controller_->GetRemoteSSLCertificate(transport_name); |
} |
+std::unique_ptr<rtc::SSLCertificate> WebRtcSession::GetRemoteSSLCertificate_n( |
+ const std::string& transport_name) { |
+ ASSERT(network_thread()->IsCurrent()); |
+ return transport_controller_->GetRemoteSSLCertificate_n(transport_name); |
+} |
+ |
bool WebRtcSession::EnableBundle(const cricket::ContentGroup& bundle) { |
const std::string* first_content_name = bundle.FirstContentName(); |
if (!first_content_name) { |