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

Unified Diff: webrtc/api/webrtcsession.cc

Issue 2614263002: Remove BaseChannel's dependency on TransportController. (Closed)
Patch Set: Fix the channel_unittests Created 3 years, 11 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/webrtcsession.cc
diff --git a/webrtc/api/webrtcsession.cc b/webrtc/api/webrtcsession.cc
index 5d414baac2f89c60df48bfd9d451132eeb7d7b8b..ed408ade88f95d68fb7f1bafe86a49b2811a20e7 100644
--- a/webrtc/api/webrtcsession.cc
+++ b/webrtc/api/webrtcsession.cc
@@ -1039,7 +1039,6 @@ bool WebRtcSession::EnableBundle(const cricket::ContentGroup& bundle) {
return false;
}
const std::string& transport_name = *first_content_name;
- cricket::BaseChannel* first_channel = GetChannel(transport_name);
#ifdef HAVE_QUIC
if (quic_data_transport_ &&
@@ -1050,8 +1049,8 @@ bool WebRtcSession::EnableBundle(const cricket::ContentGroup& bundle) {
}
#endif
- auto maybe_set_transport = [this, bundle, transport_name,
- first_channel](cricket::BaseChannel* ch) {
+ auto maybe_set_transport = [this, bundle,
+ transport_name](cricket::BaseChannel* ch) {
if (!ch || !bundle.HasContentName(ch->content_name())) {
return true;
}
@@ -1062,7 +1061,15 @@ bool WebRtcSession::EnableBundle(const cricket::ContentGroup& bundle) {
return true;
}
- if (!ch->SetTransport(transport_name)) {
+ cricket::TransportChannel* rtp_transport =
+ transport_controller_->CreateTransportChannel(
+ transport_name, cricket::ICE_CANDIDATE_COMPONENT_RTP);
+ cricket::TransportChannel* rtcp_transport = nullptr;
+ if (ch->ShouldCreateRtcpTransport()) {
+ rtcp_transport = transport_controller_->CreateTransportChannel(
+ transport_name, cricket::ICE_CANDIDATE_COMPONENT_RTCP);
+ }
+ if (!ch->SetTransport(rtp_transport, rtcp_transport)) {
Taylor Brandstetter 2017/01/09 22:50:42 I think there's an opportunity here to reduce some
LOG(LS_WARNING) << "Failed to enable BUNDLE for " << ch->content_name();
return false;
}
@@ -1670,6 +1677,8 @@ bool WebRtcSession::CreateVoiceChannel(const cricket::ContentInfo* content,
SignalVoiceChannelCreated();
voice_channel_->SignalSentPacket.connect(this,
&WebRtcSession::OnSentPacket_w);
+ voice_channel_->SignalDestroyTransport.connect(
+ this, &WebRtcSession::OnDestroyTransport);
Taylor Brandstetter 2017/01/09 22:50:42 It would be nice if the creation *and* destruction
Zhi Huang 2017/01/12 03:47:46 Done.
return true;
}
@@ -1694,6 +1703,8 @@ bool WebRtcSession::CreateVideoChannel(const cricket::ContentInfo* content,
SignalVideoChannelCreated();
video_channel_->SignalSentPacket.connect(this,
&WebRtcSession::OnSentPacket_w);
+ video_channel_->SignalDestroyTransport.connect(
+ this, &WebRtcSession::OnDestroyTransport);
return true;
}
@@ -1733,6 +1744,8 @@ bool WebRtcSession::CreateDataChannel(const cricket::ContentInfo* content,
SignalDataChannelCreated();
data_channel_->SignalSentPacket.connect(this, &WebRtcSession::OnSentPacket_w);
+ data_channel_->SignalDestroyTransport.connect(
+ this, &WebRtcSession::OnDestroyTransport);
return true;
}
@@ -2107,4 +2120,9 @@ void WebRtcSession::OnDtlsHandshakeError(rtc::SSLHandshakeError error) {
static_cast<int>(rtc::SSLHandshakeError::MAX_VALUE));
}
}
+
+void WebRtcSession::OnDestroyTransport(const std::string& transport_name,
+ int component) {
+ transport_controller_->DestroyTransportChannel(transport_name, component);
+}
} // namespace webrtc

Powered by Google App Engine
This is Rietveld 408576698