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

Unified Diff: webrtc/pc/channel.cc

Issue 2974903003: Make BaseChannel::rtp_transport_ a unique_ptr. (Closed)
Patch Set: Created 3 years, 5 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
« no previous file with comments | « webrtc/pc/channel.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/pc/channel.cc
diff --git a/webrtc/pc/channel.cc b/webrtc/pc/channel.cc
index d07126b9b18f4661d6069f7253ce5909a99436aa..80fd75b5e8441d2a93aa895481195e4c5d1c8bc7 100644
--- a/webrtc/pc/channel.cc
+++ b/webrtc/pc/channel.cc
@@ -24,6 +24,7 @@
#include "webrtc/rtc_base/dscp.h"
#include "webrtc/rtc_base/logging.h"
#include "webrtc/rtc_base/networkroute.h"
+#include "webrtc/rtc_base/ptr_util.h"
#include "webrtc/rtc_base/trace_event.h"
// Adding 'nogncheck' to disable the gn include headers check to support modular
// WebRTC build targets.
@@ -155,7 +156,7 @@ BaseChannel::BaseChannel(rtc::Thread* worker_thread,
signaling_thread_(signaling_thread),
content_name_(content_name),
rtcp_mux_required_(rtcp_mux_required),
- rtp_transport_(rtcp_mux_required),
+ rtp_transport_(rtc::MakeUnique<webrtc::RtpTransport>(rtcp_mux_required)),
srtp_required_(srtp_required),
media_channel_(media_channel),
selected_candidate_pair_(nullptr) {
@@ -163,12 +164,12 @@ BaseChannel::BaseChannel(rtc::Thread* worker_thread,
#if defined(ENABLE_EXTERNAL_AUTH)
srtp_filter_.EnableExternalAuth();
#endif
- rtp_transport_.SignalReadyToSend.connect(
+ rtp_transport_->SignalReadyToSend.connect(
this, &BaseChannel::OnTransportReadyToSend);
// TODO(zstein): RtpTransport::SignalPacketReceived will probably be replaced
// with a callback interface later so that the demuxer can select which
// channel to signal.
- rtp_transport_.SignalPacketReceived.connect(this,
+ rtp_transport_->SignalPacketReceived.connect(this,
&BaseChannel::OnPacketReceived);
LOG(LS_INFO) << "Created channel for " << content_name;
}
@@ -196,17 +197,17 @@ void BaseChannel::DisconnectTransportChannels_n() {
// media_channel may use them from a different thread.
if (rtp_dtls_transport_) {
DisconnectFromDtlsTransport(rtp_dtls_transport_);
- } else if (rtp_transport_.rtp_packet_transport()) {
- DisconnectFromPacketTransport(rtp_transport_.rtp_packet_transport());
+ } else if (rtp_transport_->rtp_packet_transport()) {
+ DisconnectFromPacketTransport(rtp_transport_->rtp_packet_transport());
}
if (rtcp_dtls_transport_) {
DisconnectFromDtlsTransport(rtcp_dtls_transport_);
- } else if (rtp_transport_.rtcp_packet_transport()) {
- DisconnectFromPacketTransport(rtp_transport_.rtcp_packet_transport());
+ } else if (rtp_transport_->rtcp_packet_transport()) {
+ DisconnectFromPacketTransport(rtp_transport_->rtcp_packet_transport());
}
- rtp_transport_.SetRtpPacketTransport(nullptr);
- rtp_transport_.SetRtcpPacketTransport(nullptr);
+ rtp_transport_->SetRtpPacketTransport(nullptr);
+ rtp_transport_->SetRtcpPacketTransport(nullptr);
// Clear pending read packets/messages.
network_thread_->Clear(&invoker_);
@@ -285,7 +286,7 @@ void BaseChannel::SetTransports_n(
RTC_DCHECK(rtp_dtls_transport == rtp_packet_transport);
RTC_DCHECK(rtcp_dtls_transport == rtcp_packet_transport);
// Can't go from non-DTLS to DTLS.
- RTC_DCHECK(!rtp_transport_.rtp_packet_transport() || rtp_dtls_transport_);
+ RTC_DCHECK(!rtp_transport_->rtp_packet_transport() || rtp_dtls_transport_);
} else {
// Can't go from DTLS to non-DTLS.
RTC_DCHECK(!rtp_dtls_transport_);
@@ -302,7 +303,7 @@ void BaseChannel::SetTransports_n(
} else {
debug_name = rtp_packet_transport->debug_name();
}
- if (rtp_packet_transport == rtp_transport_.rtp_packet_transport()) {
+ if (rtp_packet_transport == rtp_transport_->rtp_packet_transport()) {
// Nothing to do if transport isn't changing.
return;
}
@@ -342,8 +343,8 @@ void BaseChannel::SetTransport_n(
DtlsTransportInternal*& old_dtls_transport =
rtcp ? rtcp_dtls_transport_ : rtp_dtls_transport_;
rtc::PacketTransportInternal* old_packet_transport =
- rtcp ? rtp_transport_.rtcp_packet_transport()
- : rtp_transport_.rtp_packet_transport();
+ rtcp ? rtp_transport_->rtcp_packet_transport()
+ : rtp_transport_->rtp_packet_transport();
if (!old_packet_transport && !new_packet_transport) {
// Nothing to do.
@@ -358,9 +359,9 @@ void BaseChannel::SetTransport_n(
}
if (rtcp) {
- rtp_transport_.SetRtcpPacketTransport(new_packet_transport);
+ rtp_transport_->SetRtcpPacketTransport(new_packet_transport);
} else {
- rtp_transport_.SetRtpPacketTransport(new_packet_transport);
+ rtp_transport_->SetRtpPacketTransport(new_packet_transport);
}
old_dtls_transport = new_dtls_transport;
@@ -549,12 +550,12 @@ int BaseChannel::SetOption_n(SocketType type,
rtc::PacketTransportInternal* transport = nullptr;
switch (type) {
case ST_RTP:
- transport = rtp_transport_.rtp_packet_transport();
+ transport = rtp_transport_->rtp_packet_transport();
socket_options_.push_back(
std::pair<rtc::Socket::Option, int>(opt, value));
break;
case ST_RTCP:
- transport = rtp_transport_.rtcp_packet_transport();
+ transport = rtp_transport_->rtcp_packet_transport();
rtcp_socket_options_.push_back(
std::pair<rtc::Socket::Option, int>(opt, value));
break;
@@ -563,8 +564,8 @@ int BaseChannel::SetOption_n(SocketType type,
}
void BaseChannel::OnWritableState(rtc::PacketTransportInternal* transport) {
- RTC_DCHECK(transport == rtp_transport_.rtp_packet_transport() ||
- transport == rtp_transport_.rtcp_packet_transport());
+ RTC_DCHECK(transport == rtp_transport_->rtp_packet_transport() ||
+ transport == rtp_transport_->rtcp_packet_transport());
RTC_DCHECK(network_thread_->IsCurrent());
UpdateWritableState_n();
}
@@ -643,7 +644,7 @@ bool BaseChannel::SendPacket(bool rtcp,
// packet before doing anything. (We might get RTCP packets that we don't
// intend to send.) If we've negotiated RTCP mux, send RTCP over the RTP
// transport.
- if (!rtp_transport_.IsWritable(rtcp)) {
+ if (!rtp_transport_->IsWritable(rtcp)) {
return false;
}
@@ -739,11 +740,11 @@ bool BaseChannel::SendPacket(bool rtcp,
// Bon voyage.
int flags = (secure() && secure_dtls()) ? PF_SRTP_BYPASS : PF_NORMAL;
- return rtp_transport_.SendPacket(rtcp, packet, updated_options, flags);
+ return rtp_transport_->SendPacket(rtcp, packet, updated_options, flags);
}
bool BaseChannel::HandlesPayloadType(int packet_type) const {
- return rtp_transport_.HandlesPayloadType(packet_type);
+ return rtp_transport_->HandlesPayloadType(packet_type);
}
void BaseChannel::OnPacketReceived(bool rtcp,
@@ -871,9 +872,9 @@ void BaseChannel::DisableMedia_w() {
void BaseChannel::UpdateWritableState_n() {
rtc::PacketTransportInternal* rtp_packet_transport =
- rtp_transport_.rtp_packet_transport();
+ rtp_transport_->rtp_packet_transport();
rtc::PacketTransportInternal* rtcp_packet_transport =
- rtp_transport_.rtcp_packet_transport();
+ rtp_transport_->rtcp_packet_transport();
if (rtp_packet_transport && rtp_packet_transport->writable() &&
(!rtcp_packet_transport || rtcp_packet_transport->writable())) {
ChannelWritable_n();
@@ -1202,12 +1203,12 @@ bool BaseChannel::SetRtcpMux_n(bool enable,
// the RTCP transport.
std::string debug_name =
transport_name_.empty()
- ? rtp_transport_.rtp_packet_transport()->debug_name()
+ ? rtp_transport_->rtp_packet_transport()->debug_name()
: transport_name_;
;
LOG(LS_INFO) << "Enabling rtcp-mux for " << content_name()
<< "; no longer need RTCP transport for " << debug_name;
- if (rtp_transport_.rtcp_packet_transport()) {
+ if (rtp_transport_->rtcp_packet_transport()) {
SetTransport_n(true, nullptr, nullptr);
SignalRtcpMuxFullyActive(transport_name_);
}
@@ -1225,13 +1226,13 @@ bool BaseChannel::SetRtcpMux_n(bool enable,
SafeSetError("Failed to setup RTCP mux filter.", error_desc);
return false;
}
- rtp_transport_.SetRtcpMuxEnabled(rtcp_mux_filter_.IsActive());
+ rtp_transport_->SetRtcpMuxEnabled(rtcp_mux_filter_.IsActive());
// |rtcp_mux_filter_| can be active if |action| is CA_PRANSWER or
// CA_ANSWER, but we only want to tear down the RTCP transport if we received
// a final answer.
if (rtcp_mux_filter_.IsActive()) {
// If the RTP transport is already writable, then so are we.
- if (rtp_transport_.rtp_packet_transport()->writable()) {
+ if (rtp_transport_->rtp_packet_transport()->writable()) {
ChannelWritable_n();
}
}
@@ -1457,7 +1458,7 @@ void BaseChannel::OnMessage(rtc::Message *pmsg) {
}
void BaseChannel::AddHandledPayloadType(int payload_type) {
- rtp_transport_.AddHandledPayloadType(payload_type);
+ rtp_transport_->AddHandledPayloadType(payload_type);
}
void BaseChannel::FlushRtcpMessages_n() {
« no previous file with comments | « webrtc/pc/channel.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698