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

Side by Side Diff: remoting/protocol/ice_transport_channel.cc

Issue 1545743002: Move ownership of Transport out of Session. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@move_not_pass_client
Patch Set: Created 4 years, 12 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "remoting/protocol/ice_transport_channel.h" 5 #include "remoting/protocol/ice_transport_channel.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/callback.h" 9 #include "base/callback.h"
10 #include "base/callback_helpers.h" 10 #include "base/callback_helpers.h"
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 ice_username_fragment_( 53 ice_username_fragment_(
54 rtc::CreateRandomString(cricket::ICE_UFRAG_LENGTH)), 54 rtc::CreateRandomString(cricket::ICE_UFRAG_LENGTH)),
55 connect_attempts_left_(kMaxReconnectAttempts), 55 connect_attempts_left_(kMaxReconnectAttempts),
56 weak_factory_(this) { 56 weak_factory_(this) {
57 DCHECK(!ice_username_fragment_.empty()); 57 DCHECK(!ice_username_fragment_.empty());
58 } 58 }
59 59
60 IceTransportChannel::~IceTransportChannel() { 60 IceTransportChannel::~IceTransportChannel() {
61 DCHECK(delegate_); 61 DCHECK(delegate_);
62 62
63 delegate_->OnTransportDeleted(this); 63 delegate_->OnChannelDeleted(this);
64 64
65 auto task_runner = base::ThreadTaskRunnerHandle::Get(); 65 auto task_runner = base::ThreadTaskRunnerHandle::Get();
66 if (channel_) 66 if (channel_)
67 task_runner->DeleteSoon(FROM_HERE, channel_.release()); 67 task_runner->DeleteSoon(FROM_HERE, channel_.release());
68 if (port_allocator_) 68 if (port_allocator_)
69 task_runner->DeleteSoon(FROM_HERE, port_allocator_.release()); 69 task_runner->DeleteSoon(FROM_HERE, port_allocator_.release());
70 } 70 }
71 71
72 void IceTransportChannel::Connect(const std::string& name, 72 void IceTransportChannel::Connect(const std::string& name,
73 Delegate* delegate, 73 Delegate* delegate,
(...skipping 21 matching lines...) Expand all
95 95
96 // Create P2PTransportChannel, attach signal handlers and connect it. 96 // Create P2PTransportChannel, attach signal handlers and connect it.
97 // TODO(sergeyu): Specify correct component ID for the channel. 97 // TODO(sergeyu): Specify correct component ID for the channel.
98 channel_.reset(new cricket::P2PTransportChannel( 98 channel_.reset(new cricket::P2PTransportChannel(
99 std::string(), 0, nullptr, port_allocator_.get())); 99 std::string(), 0, nullptr, port_allocator_.get()));
100 std::string ice_password = rtc::CreateRandomString(cricket::ICE_PWD_LENGTH); 100 std::string ice_password = rtc::CreateRandomString(cricket::ICE_PWD_LENGTH);
101 channel_->SetIceProtocolType(cricket::ICEPROTO_RFC5245); 101 channel_->SetIceProtocolType(cricket::ICEPROTO_RFC5245);
102 channel_->SetIceRole((transport_context_->role() == TransportRole::CLIENT) 102 channel_->SetIceRole((transport_context_->role() == TransportRole::CLIENT)
103 ? cricket::ICEROLE_CONTROLLING 103 ? cricket::ICEROLE_CONTROLLING
104 : cricket::ICEROLE_CONTROLLED); 104 : cricket::ICEROLE_CONTROLLED);
105 delegate_->OnTransportIceCredentials(this, ice_username_fragment_, 105 delegate_->OnChannelIceCredentials(this, ice_username_fragment_,
106 ice_password); 106 ice_password);
107 channel_->SetIceCredentials(ice_username_fragment_, ice_password); 107 channel_->SetIceCredentials(ice_username_fragment_, ice_password);
108 channel_->SignalCandidateGathered.connect( 108 channel_->SignalCandidateGathered.connect(
109 this, &IceTransportChannel::OnCandidateGathered); 109 this, &IceTransportChannel::OnCandidateGathered);
110 channel_->SignalRouteChange.connect( 110 channel_->SignalRouteChange.connect(
111 this, &IceTransportChannel::OnRouteChange); 111 this, &IceTransportChannel::OnRouteChange);
112 channel_->SignalReceivingState.connect( 112 channel_->SignalReceivingState.connect(
113 this, &IceTransportChannel::OnReceivingState); 113 this, &IceTransportChannel::OnReceivingState);
114 channel_->SignalWritableState.connect( 114 channel_->SignalWritableState.connect(
115 this, &IceTransportChannel::OnWritableState); 115 this, &IceTransportChannel::OnWritableState);
116 channel_->set_incoming_only(!(transport_context_->network_settings().flags & 116 channel_->set_incoming_only(!(transport_context_->network_settings().flags &
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 183
184 bool IceTransportChannel::is_connected() const { 184 bool IceTransportChannel::is_connected() const {
185 DCHECK(thread_checker_.CalledOnValidThread()); 185 DCHECK(thread_checker_.CalledOnValidThread());
186 return callback_.is_null(); 186 return callback_.is_null();
187 } 187 }
188 188
189 void IceTransportChannel::OnCandidateGathered( 189 void IceTransportChannel::OnCandidateGathered(
190 cricket::TransportChannelImpl* channel, 190 cricket::TransportChannelImpl* channel,
191 const cricket::Candidate& candidate) { 191 const cricket::Candidate& candidate) {
192 DCHECK(thread_checker_.CalledOnValidThread()); 192 DCHECK(thread_checker_.CalledOnValidThread());
193 delegate_->OnTransportCandidate(this, candidate); 193 delegate_->OnChannelCandidate(this, candidate);
194 } 194 }
195 195
196 void IceTransportChannel::OnRouteChange( 196 void IceTransportChannel::OnRouteChange(
197 cricket::TransportChannel* channel, 197 cricket::TransportChannel* channel,
198 const cricket::Candidate& candidate) { 198 const cricket::Candidate& candidate) {
199 // Ignore notifications if the channel is not writable. 199 // Ignore notifications if the channel is not writable.
200 if (channel_->writable()) 200 if (channel_->writable())
201 NotifyRouteChanged(); 201 NotifyRouteChanged();
202 } 202 }
203 203
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 LOG(FATAL) << "Failed to convert peer IP address."; 253 LOG(FATAL) << "Failed to convert peer IP address.";
254 } 254 }
255 255
256 const cricket::Candidate& local_candidate = 256 const cricket::Candidate& local_candidate =
257 channel_->best_connection()->local_candidate(); 257 channel_->best_connection()->local_candidate();
258 if (!jingle_glue::SocketAddressToIPEndPoint( 258 if (!jingle_glue::SocketAddressToIPEndPoint(
259 local_candidate.address(), &route.local_address)) { 259 local_candidate.address(), &route.local_address)) {
260 LOG(FATAL) << "Failed to convert local IP address."; 260 LOG(FATAL) << "Failed to convert local IP address.";
261 } 261 }
262 262
263 delegate_->OnTransportRouteChange(this, route); 263 delegate_->OnChannelRouteChange(this, route);
264 } 264 }
265 265
266 void IceTransportChannel::TryReconnect() { 266 void IceTransportChannel::TryReconnect() {
267 DCHECK(!channel_->writable()); 267 DCHECK(!channel_->writable());
268 268
269 if (connect_attempts_left_ <= 0) { 269 if (connect_attempts_left_ <= 0) {
270 reconnect_timer_.Stop(); 270 reconnect_timer_.Stop();
271 271
272 // Notify the caller that ICE connection has failed - normally that will 272 // Notify the caller that ICE connection has failed - normally that will
273 // terminate Jingle connection (i.e. the transport will be destroyed). 273 // terminate Jingle connection (i.e. the transport will be destroyed).
274 delegate_->OnTransportFailed(this); 274 delegate_->OnChannelFailed(this);
275 return; 275 return;
276 } 276 }
277 --connect_attempts_left_; 277 --connect_attempts_left_;
278 278
279 // Restart ICE by resetting ICE password. 279 // Restart ICE by resetting ICE password.
280 std::string ice_password = rtc::CreateRandomString(cricket::ICE_PWD_LENGTH); 280 std::string ice_password = rtc::CreateRandomString(cricket::ICE_PWD_LENGTH);
281 delegate_->OnTransportIceCredentials(this, ice_username_fragment_, 281 delegate_->OnChannelIceCredentials(this, ice_username_fragment_,
282 ice_password); 282 ice_password);
283 channel_->SetIceCredentials(ice_username_fragment_, ice_password); 283 channel_->SetIceCredentials(ice_username_fragment_, ice_password);
284 } 284 }
285 285
286 } // namespace protocol 286 } // namespace protocol
287 } // namespace remoting 287 } // namespace remoting
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698