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

Side by Side Diff: net/socket/transport_client_socket_pool.cc

Issue 8824006: Migrate net/socket/socket.h, net/socket/stream_socket.h to base::Bind(). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 9 years 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "net/socket/transport_client_socket_pool.h" 5 #include "net/socket/transport_client_socket_pool.h"
6 6
7 #include "base/compiler_specific.h" 7 #include "base/compiler_specific.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 const scoped_refptr<TransportSocketParams>& params, 92 const scoped_refptr<TransportSocketParams>& params,
93 base::TimeDelta timeout_duration, 93 base::TimeDelta timeout_duration,
94 ClientSocketFactory* client_socket_factory, 94 ClientSocketFactory* client_socket_factory,
95 HostResolver* host_resolver, 95 HostResolver* host_resolver,
96 Delegate* delegate, 96 Delegate* delegate,
97 NetLog* net_log) 97 NetLog* net_log)
98 : ConnectJob(group_name, timeout_duration, delegate, 98 : ConnectJob(group_name, timeout_duration, delegate,
99 BoundNetLog::Make(net_log, NetLog::SOURCE_CONNECT_JOB)), 99 BoundNetLog::Make(net_log, NetLog::SOURCE_CONNECT_JOB)),
100 params_(params), 100 params_(params),
101 client_socket_factory_(client_socket_factory), 101 client_socket_factory_(client_socket_factory),
102 ALLOW_THIS_IN_INITIALIZER_LIST( 102 resolver_(host_resolver) {}
103 callback_(this,
104 &TransportConnectJob::OnIOComplete)),
105 resolver_(host_resolver),
106 ALLOW_THIS_IN_INITIALIZER_LIST(
107 fallback_callback_(
108 this,
109 &TransportConnectJob::DoIPv6FallbackTransportConnectComplete)) {}
110 103
111 TransportConnectJob::~TransportConnectJob() { 104 TransportConnectJob::~TransportConnectJob() {
112 // We don't worry about cancelling the host resolution and TCP connect, since 105 // We don't worry about cancelling the host resolution and TCP connect, since
113 // ~SingleRequestHostResolver and ~StreamSocket will take care of it. 106 // ~SingleRequestHostResolver and ~StreamSocket will take care of it.
114 } 107 }
115 108
116 LoadState TransportConnectJob::GetLoadState() const { 109 LoadState TransportConnectJob::GetLoadState() const {
117 switch (next_state_) { 110 switch (next_state_) {
118 case STATE_RESOLVE_HOST: 111 case STATE_RESOLVE_HOST:
119 case STATE_RESOLVE_HOST_COMPLETE: 112 case STATE_RESOLVE_HOST_COMPLETE:
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 if (result == OK) 202 if (result == OK)
210 next_state_ = STATE_TRANSPORT_CONNECT; 203 next_state_ = STATE_TRANSPORT_CONNECT;
211 return result; 204 return result;
212 } 205 }
213 206
214 int TransportConnectJob::DoTransportConnect() { 207 int TransportConnectJob::DoTransportConnect() {
215 next_state_ = STATE_TRANSPORT_CONNECT_COMPLETE; 208 next_state_ = STATE_TRANSPORT_CONNECT_COMPLETE;
216 transport_socket_.reset(client_socket_factory_->CreateTransportClientSocket( 209 transport_socket_.reset(client_socket_factory_->CreateTransportClientSocket(
217 addresses_, net_log().net_log(), net_log().source())); 210 addresses_, net_log().net_log(), net_log().source()));
218 connect_start_time_ = base::TimeTicks::Now(); 211 connect_start_time_ = base::TimeTicks::Now();
219 int rv = transport_socket_->Connect(&callback_); 212 int rv = transport_socket_->Connect(
213 base::Bind(&TransportConnectJob::OnIOComplete, base::Unretained(this)));
220 if (rv == ERR_IO_PENDING && 214 if (rv == ERR_IO_PENDING &&
221 AddressListStartsWithIPv6AndHasAnIPv4Addr(addresses_)) { 215 AddressListStartsWithIPv6AndHasAnIPv4Addr(addresses_)) {
222 fallback_timer_.Start(FROM_HERE, 216 fallback_timer_.Start(FROM_HERE,
223 base::TimeDelta::FromMilliseconds(kIPv6FallbackTimerInMs), 217 base::TimeDelta::FromMilliseconds(kIPv6FallbackTimerInMs),
224 this, &TransportConnectJob::DoIPv6FallbackTransportConnect); 218 this, &TransportConnectJob::DoIPv6FallbackTransportConnect);
225 } 219 }
226 return rv; 220 return rv;
227 } 221 }
228 222
229 int TransportConnectJob::DoTransportConnectComplete(int result) { 223 int TransportConnectJob::DoTransportConnectComplete(int result) {
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
289 283
290 DCHECK(!fallback_transport_socket_.get()); 284 DCHECK(!fallback_transport_socket_.get());
291 DCHECK(!fallback_addresses_.get()); 285 DCHECK(!fallback_addresses_.get());
292 286
293 fallback_addresses_.reset(new AddressList(addresses_)); 287 fallback_addresses_.reset(new AddressList(addresses_));
294 MakeAddrListStartWithIPv4(fallback_addresses_.get()); 288 MakeAddrListStartWithIPv4(fallback_addresses_.get());
295 fallback_transport_socket_.reset( 289 fallback_transport_socket_.reset(
296 client_socket_factory_->CreateTransportClientSocket( 290 client_socket_factory_->CreateTransportClientSocket(
297 *fallback_addresses_, net_log().net_log(), net_log().source())); 291 *fallback_addresses_, net_log().net_log(), net_log().source()));
298 fallback_connect_start_time_ = base::TimeTicks::Now(); 292 fallback_connect_start_time_ = base::TimeTicks::Now();
299 int rv = fallback_transport_socket_->Connect(&fallback_callback_); 293 int rv = fallback_transport_socket_->Connect(
294 base::Bind(
295 &TransportConnectJob::DoIPv6FallbackTransportConnectComplete,
296 base::Unretained(this)));
300 if (rv != ERR_IO_PENDING) 297 if (rv != ERR_IO_PENDING)
301 DoIPv6FallbackTransportConnectComplete(rv); 298 DoIPv6FallbackTransportConnectComplete(rv);
302 } 299 }
303 300
304 void TransportConnectJob::DoIPv6FallbackTransportConnectComplete(int result) { 301 void TransportConnectJob::DoIPv6FallbackTransportConnectComplete(int result) {
305 // This should only happen when we're waiting for the main connect to succeed. 302 // This should only happen when we're waiting for the main connect to succeed.
306 if (next_state_ != STATE_TRANSPORT_CONNECT_COMPLETE) { 303 if (next_state_ != STATE_TRANSPORT_CONNECT_COMPLETE) {
307 NOTREACHED(); 304 NOTREACHED();
308 return; 305 return;
309 } 306 }
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
489 486
490 base::TimeDelta TransportClientSocketPool::ConnectionTimeout() const { 487 base::TimeDelta TransportClientSocketPool::ConnectionTimeout() const {
491 return base_.ConnectionTimeout(); 488 return base_.ConnectionTimeout();
492 } 489 }
493 490
494 ClientSocketPoolHistograms* TransportClientSocketPool::histograms() const { 491 ClientSocketPoolHistograms* TransportClientSocketPool::histograms() const {
495 return base_.histograms(); 492 return base_.histograms();
496 } 493 }
497 494
498 } // namespace net 495 } // namespace net
OLDNEW
« no previous file with comments | « net/socket/transport_client_socket_pool.h ('k') | net/socket/transport_client_socket_pool_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698