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

Side by Side Diff: chrome/browser/net/network_stats.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
« no previous file with comments | « chrome/browser/net/network_stats.h ('k') | content/browser/renderer_host/p2p/socket_host_tcp.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "chrome/browser/net/network_stats.h" 5 #include "chrome/browser/net/network_stats.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback_old.h" 8 #include "base/callback_old.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 // This specifies the starting position of the <encoded_payload> and length of 75 // This specifies the starting position of the <encoded_payload> and length of
76 // the <encoded_payload> in "echo response". 76 // the <encoded_payload> in "echo response".
77 static const uint32 kEncodedPayloadStart = kKeyEnd; 77 static const uint32 kEncodedPayloadStart = kKeyEnd;
78 78
79 // NetworkStats methods and members. 79 // NetworkStats methods and members.
80 NetworkStats::NetworkStats() 80 NetworkStats::NetworkStats()
81 : load_size_(0), 81 : load_size_(0),
82 bytes_to_read_(0), 82 bytes_to_read_(0),
83 bytes_to_send_(0), 83 bytes_to_send_(0),
84 encoded_message_(""), 84 encoded_message_(""),
85 ALLOW_THIS_IN_INITIALIZER_LIST(
86 read_callback_(this, &NetworkStats::OnReadComplete)),
87 ALLOW_THIS_IN_INITIALIZER_LIST(
88 write_callback_(this, &NetworkStats::OnWriteComplete)),
89 finished_callback_(NULL), 85 finished_callback_(NULL),
90 start_time_(base::TimeTicks::Now()), 86 start_time_(base::TimeTicks::Now()),
91 ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) { 87 ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) {
92 } 88 }
93 89
94 NetworkStats::~NetworkStats() { 90 NetworkStats::~NetworkStats() {
95 socket_.reset(); 91 socket_.reset();
96 } 92 }
97 93
98 bool NetworkStats::Start(net::HostResolver* host_resolver, 94 bool NetworkStats::Start(net::HostResolver* host_resolver,
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 int rv; 235 int rv;
240 do { 236 do {
241 if (!socket_.get()) 237 if (!socket_.get())
242 return; 238 return;
243 239
244 DCHECK(!read_buffer_.get()); 240 DCHECK(!read_buffer_.get());
245 241
246 // We release the read_buffer_ in the destructor if there is an error. 242 // We release the read_buffer_ in the destructor if there is an error.
247 read_buffer_ = new net::IOBuffer(kMaxMessage); 243 read_buffer_ = new net::IOBuffer(kMaxMessage);
248 244
249 rv = socket_->Read(read_buffer_, kMaxMessage, &read_callback_); 245 rv = socket_->Read(read_buffer_, kMaxMessage,
246 base::Bind(&NetworkStats::OnReadComplete,
247 base::Unretained(this)));
250 if (rv == net::ERR_IO_PENDING) 248 if (rv == net::ERR_IO_PENDING)
251 return; 249 return;
252 // If we have read all the data then return. 250 // If we have read all the data then return.
253 if (ReadComplete(rv)) 251 if (ReadComplete(rv))
254 return; 252 return;
255 } while (rv > 0); 253 } while (rv > 0);
256 } 254 }
257 255
258 int NetworkStats::SendData() { 256 int NetworkStats::SendData() {
259 DCHECK(bytes_to_send_); // We should have data to send. 257 DCHECK(bytes_to_send_); // We should have data to send.
260 do { 258 do {
261 if (!write_buffer_.get()) { 259 if (!write_buffer_.get()) {
262 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(bytes_to_send_)); 260 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(bytes_to_send_));
263 GetEchoRequest(buffer); 261 GetEchoRequest(buffer);
264 write_buffer_ = new net::DrainableIOBuffer(buffer, bytes_to_send_); 262 write_buffer_ = new net::DrainableIOBuffer(buffer, bytes_to_send_);
265 } 263 }
266 264
267 if (!socket_.get()) 265 if (!socket_.get())
268 return net::ERR_UNEXPECTED; 266 return net::ERR_UNEXPECTED;
269 int rv = socket_->Write(write_buffer_, 267 int rv = socket_->Write(write_buffer_,
270 write_buffer_->BytesRemaining(), 268 write_buffer_->BytesRemaining(),
271 &write_callback_); 269 base::Bind(&NetworkStats::OnWriteComplete,
270 base::Unretained(this)));
272 if (rv < 0) 271 if (rv < 0)
273 return rv; 272 return rv;
274 write_buffer_->DidConsume(rv); 273 write_buffer_->DidConsume(rv);
275 bytes_to_send_ -= rv; 274 bytes_to_send_ -= rv;
276 if (!write_buffer_->BytesRemaining()) 275 if (!write_buffer_->BytesRemaining())
277 write_buffer_ = NULL; 276 write_buffer_ = NULL;
278 } while (bytes_to_send_); 277 } while (bytes_to_send_);
279 return net::OK; 278 return net::OK;
280 } 279 }
281 280
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
436 // Close the socket so that there are no more IO operations. 435 // Close the socket so that there are no more IO operations.
437 net::UDPClientSocket* udp_socket = 436 net::UDPClientSocket* udp_socket =
438 static_cast<net::UDPClientSocket*>(socket()); 437 static_cast<net::UDPClientSocket*>(socket());
439 if (udp_socket) 438 if (udp_socket)
440 udp_socket->Close(); 439 udp_socket->Close();
441 440
442 delete this; 441 delete this;
443 } 442 }
444 443
445 // TCPStatsClient methods and members. 444 // TCPStatsClient methods and members.
446 TCPStatsClient::TCPStatsClient() 445 TCPStatsClient::TCPStatsClient() {
447 : NetworkStats(),
448 ALLOW_THIS_IN_INITIALIZER_LIST(
449 connect_callback_(this, &TCPStatsClient::OnConnectComplete)) {
450 } 446 }
451 447
452 TCPStatsClient::~TCPStatsClient() { 448 TCPStatsClient::~TCPStatsClient() {
453 } 449 }
454 450
455 bool TCPStatsClient::DoConnect(int result) { 451 bool TCPStatsClient::DoConnect(int result) {
456 if (result != net::OK) { 452 if (result != net::OK) {
457 Finish(RESOLVE_FAILED, result); 453 Finish(RESOLVE_FAILED, result);
458 return false; 454 return false;
459 } 455 }
460 456
461 net::TCPClientSocket* tcp_socket = 457 net::TCPClientSocket* tcp_socket =
462 new net::TCPClientSocket(GetAddressList(), NULL, net::NetLog::Source()); 458 new net::TCPClientSocket(GetAddressList(), NULL, net::NetLog::Source());
463 if (!tcp_socket) { 459 if (!tcp_socket) {
464 Finish(SOCKET_CREATE_FAILED, net::ERR_INVALID_ARGUMENT); 460 Finish(SOCKET_CREATE_FAILED, net::ERR_INVALID_ARGUMENT);
465 return false; 461 return false;
466 } 462 }
467 set_socket(tcp_socket); 463 set_socket(tcp_socket);
468 464
469 int rv = tcp_socket->Connect(&connect_callback_); 465 int rv = tcp_socket->Connect(base::Bind(&TCPStatsClient::OnConnectComplete,
466 base::Unretained(this)));
470 if (rv == net::ERR_IO_PENDING) 467 if (rv == net::ERR_IO_PENDING)
471 return true; 468 return true;
472 469
473 return NetworkStats::ConnectComplete(rv); 470 return NetworkStats::ConnectComplete(rv);
474 } 471 }
475 472
476 void TCPStatsClient::OnConnectComplete(int result) { 473 void TCPStatsClient::OnConnectComplete(int result) {
477 NetworkStats::ConnectComplete(result); 474 NetworkStats::ConnectComplete(result);
478 } 475 }
479 476
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
597 TCPStatsClient* small_tcp_client = new TCPStatsClient(); 594 TCPStatsClient* small_tcp_client = new TCPStatsClient();
598 small_tcp_client->Start( 595 small_tcp_client->Start(
599 host_resolver, tcp_server_address, kSmallTestBytesToSend, NULL); 596 host_resolver, tcp_server_address, kSmallTestBytesToSend, NULL);
600 597
601 TCPStatsClient* large_tcp_client = new TCPStatsClient(); 598 TCPStatsClient* large_tcp_client = new TCPStatsClient();
602 large_tcp_client->Start( 599 large_tcp_client->Start(
603 host_resolver, tcp_server_address, kLargeTestBytesToSend, NULL); 600 host_resolver, tcp_server_address, kLargeTestBytesToSend, NULL);
604 } 601 }
605 602
606 } // namespace chrome_browser_net 603 } // namespace chrome_browser_net
OLDNEW
« no previous file with comments | « chrome/browser/net/network_stats.h ('k') | content/browser/renderer_host/p2p/socket_host_tcp.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698