OLD | NEW |
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 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/callback.h" | 10 #include "base/callback.h" |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
54 ice_username_fragment_( | 54 ice_username_fragment_( |
55 rtc::CreateRandomString(cricket::ICE_UFRAG_LENGTH)), | 55 rtc::CreateRandomString(cricket::ICE_UFRAG_LENGTH)), |
56 connect_attempts_left_(kMaxReconnectAttempts), | 56 connect_attempts_left_(kMaxReconnectAttempts), |
57 weak_factory_(this) { | 57 weak_factory_(this) { |
58 DCHECK(!ice_username_fragment_.empty()); | 58 DCHECK(!ice_username_fragment_.empty()); |
59 } | 59 } |
60 | 60 |
61 IceTransportChannel::~IceTransportChannel() { | 61 IceTransportChannel::~IceTransportChannel() { |
62 DCHECK(delegate_); | 62 DCHECK(delegate_); |
63 | 63 |
64 delegate_->OnTransportDeleted(this); | 64 delegate_->OnChannelDeleted(this); |
65 | 65 |
66 auto task_runner = base::ThreadTaskRunnerHandle::Get(); | 66 auto task_runner = base::ThreadTaskRunnerHandle::Get(); |
67 if (channel_) | 67 if (channel_) |
68 task_runner->DeleteSoon(FROM_HERE, channel_.release()); | 68 task_runner->DeleteSoon(FROM_HERE, channel_.release()); |
69 if (port_allocator_) | 69 if (port_allocator_) |
70 task_runner->DeleteSoon(FROM_HERE, port_allocator_.release()); | 70 task_runner->DeleteSoon(FROM_HERE, port_allocator_.release()); |
71 } | 71 } |
72 | 72 |
73 void IceTransportChannel::Connect(const std::string& name, | 73 void IceTransportChannel::Connect(const std::string& name, |
74 Delegate* delegate, | 74 Delegate* delegate, |
(...skipping 21 matching lines...) Expand all Loading... |
96 | 96 |
97 // Create P2PTransportChannel, attach signal handlers and connect it. | 97 // Create P2PTransportChannel, attach signal handlers and connect it. |
98 // TODO(sergeyu): Specify correct component ID for the channel. | 98 // TODO(sergeyu): Specify correct component ID for the channel. |
99 channel_.reset(new cricket::P2PTransportChannel( | 99 channel_.reset(new cricket::P2PTransportChannel( |
100 std::string(), 0, nullptr, port_allocator_.get())); | 100 std::string(), 0, nullptr, port_allocator_.get())); |
101 std::string ice_password = rtc::CreateRandomString(cricket::ICE_PWD_LENGTH); | 101 std::string ice_password = rtc::CreateRandomString(cricket::ICE_PWD_LENGTH); |
102 channel_->SetIceProtocolType(cricket::ICEPROTO_RFC5245); | 102 channel_->SetIceProtocolType(cricket::ICEPROTO_RFC5245); |
103 channel_->SetIceRole((transport_context_->role() == TransportRole::CLIENT) | 103 channel_->SetIceRole((transport_context_->role() == TransportRole::CLIENT) |
104 ? cricket::ICEROLE_CONTROLLING | 104 ? cricket::ICEROLE_CONTROLLING |
105 : cricket::ICEROLE_CONTROLLED); | 105 : cricket::ICEROLE_CONTROLLED); |
106 delegate_->OnTransportIceCredentials(this, ice_username_fragment_, | 106 delegate_->OnChannelIceCredentials(this, ice_username_fragment_, |
107 ice_password); | 107 ice_password); |
108 channel_->SetIceCredentials(ice_username_fragment_, ice_password); | 108 channel_->SetIceCredentials(ice_username_fragment_, ice_password); |
109 channel_->SignalCandidateGathered.connect( | 109 channel_->SignalCandidateGathered.connect( |
110 this, &IceTransportChannel::OnCandidateGathered); | 110 this, &IceTransportChannel::OnCandidateGathered); |
111 channel_->SignalRouteChange.connect( | 111 channel_->SignalRouteChange.connect( |
112 this, &IceTransportChannel::OnRouteChange); | 112 this, &IceTransportChannel::OnRouteChange); |
113 channel_->SignalReceivingState.connect( | 113 channel_->SignalReceivingState.connect( |
114 this, &IceTransportChannel::OnReceivingState); | 114 this, &IceTransportChannel::OnReceivingState); |
115 channel_->SignalWritableState.connect( | 115 channel_->SignalWritableState.connect( |
116 this, &IceTransportChannel::OnWritableState); | 116 this, &IceTransportChannel::OnWritableState); |
117 channel_->set_incoming_only(!(transport_context_->network_settings().flags & | 117 channel_->set_incoming_only(!(transport_context_->network_settings().flags & |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
184 | 184 |
185 bool IceTransportChannel::is_connected() const { | 185 bool IceTransportChannel::is_connected() const { |
186 DCHECK(thread_checker_.CalledOnValidThread()); | 186 DCHECK(thread_checker_.CalledOnValidThread()); |
187 return callback_.is_null(); | 187 return callback_.is_null(); |
188 } | 188 } |
189 | 189 |
190 void IceTransportChannel::OnCandidateGathered( | 190 void IceTransportChannel::OnCandidateGathered( |
191 cricket::TransportChannelImpl* channel, | 191 cricket::TransportChannelImpl* channel, |
192 const cricket::Candidate& candidate) { | 192 const cricket::Candidate& candidate) { |
193 DCHECK(thread_checker_.CalledOnValidThread()); | 193 DCHECK(thread_checker_.CalledOnValidThread()); |
194 delegate_->OnTransportCandidate(this, candidate); | 194 delegate_->OnChannelCandidate(this, candidate); |
195 } | 195 } |
196 | 196 |
197 void IceTransportChannel::OnRouteChange( | 197 void IceTransportChannel::OnRouteChange( |
198 cricket::TransportChannel* channel, | 198 cricket::TransportChannel* channel, |
199 const cricket::Candidate& candidate) { | 199 const cricket::Candidate& candidate) { |
200 // Ignore notifications if the channel is not writable. | 200 // Ignore notifications if the channel is not writable. |
201 if (channel_->writable()) | 201 if (channel_->writable()) |
202 NotifyRouteChanged(); | 202 NotifyRouteChanged(); |
203 } | 203 } |
204 | 204 |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
254 LOG(FATAL) << "Failed to convert peer IP address."; | 254 LOG(FATAL) << "Failed to convert peer IP address."; |
255 } | 255 } |
256 | 256 |
257 const cricket::Candidate& local_candidate = | 257 const cricket::Candidate& local_candidate = |
258 channel_->best_connection()->local_candidate(); | 258 channel_->best_connection()->local_candidate(); |
259 if (!jingle_glue::SocketAddressToIPEndPoint( | 259 if (!jingle_glue::SocketAddressToIPEndPoint( |
260 local_candidate.address(), &route.local_address)) { | 260 local_candidate.address(), &route.local_address)) { |
261 LOG(FATAL) << "Failed to convert local IP address."; | 261 LOG(FATAL) << "Failed to convert local IP address."; |
262 } | 262 } |
263 | 263 |
264 delegate_->OnTransportRouteChange(this, route); | 264 delegate_->OnChannelRouteChange(this, route); |
265 } | 265 } |
266 | 266 |
267 void IceTransportChannel::TryReconnect() { | 267 void IceTransportChannel::TryReconnect() { |
268 DCHECK(!channel_->writable()); | 268 DCHECK(!channel_->writable()); |
269 | 269 |
270 if (connect_attempts_left_ <= 0) { | 270 if (connect_attempts_left_ <= 0) { |
271 reconnect_timer_.Stop(); | 271 reconnect_timer_.Stop(); |
272 | 272 |
273 // Notify the caller that ICE connection has failed - normally that will | 273 // Notify the caller that ICE connection has failed - normally that will |
274 // terminate Jingle connection (i.e. the transport will be destroyed). | 274 // terminate Jingle connection (i.e. the transport will be destroyed). |
275 delegate_->OnTransportFailed(this); | 275 delegate_->OnChannelFailed(this); |
276 return; | 276 return; |
277 } | 277 } |
278 --connect_attempts_left_; | 278 --connect_attempts_left_; |
279 | 279 |
280 // Restart ICE by resetting ICE password. | 280 // Restart ICE by resetting ICE password. |
281 std::string ice_password = rtc::CreateRandomString(cricket::ICE_PWD_LENGTH); | 281 std::string ice_password = rtc::CreateRandomString(cricket::ICE_PWD_LENGTH); |
282 delegate_->OnTransportIceCredentials(this, ice_username_fragment_, | 282 delegate_->OnChannelIceCredentials(this, ice_username_fragment_, |
283 ice_password); | 283 ice_password); |
284 channel_->SetIceCredentials(ice_username_fragment_, ice_password); | 284 channel_->SetIceCredentials(ice_username_fragment_, ice_password); |
285 } | 285 } |
286 | 286 |
287 } // namespace protocol | 287 } // namespace protocol |
288 } // namespace remoting | 288 } // namespace remoting |
OLD | NEW |