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

Side by Side Diff: chrome/browser/net/network_stats.cc

Issue 14113053: chrome: Use base::MessageLoop. (Part 3) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase again Created 7 years, 6 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/logging.h" 8 #include "base/logging.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "base/metrics/field_trial.h" 10 #include "base/metrics/field_trial.h"
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 if (rv != net::ERR_IO_PENDING) 258 if (rv != net::ERR_IO_PENDING)
259 Finish(WRITE_FAILED, rv); 259 Finish(WRITE_FAILED, rv);
260 break; 260 break;
261 } 261 }
262 DCHECK_EQ(bytes_to_send_, 0u); 262 DCHECK_EQ(bytes_to_send_, 0u);
263 }; 263 };
264 } 264 }
265 265
266 void NetworkStats::SendNextPacketAfterDelay() { 266 void NetworkStats::SendNextPacketAfterDelay() {
267 if (current_test_ == PACED_PACKET_TEST) { 267 if (current_test_ == PACED_PACKET_TEST) {
268 MessageLoop::current()->PostDelayedTask( 268 base::MessageLoop::current()->PostDelayedTask(
269 FROM_HERE, 269 FROM_HERE,
270 base::Bind(&NetworkStats::SendPacket, weak_factory_.GetWeakPtr()), 270 base::Bind(&NetworkStats::SendPacket, weak_factory_.GetWeakPtr()),
271 average_time_); 271 average_time_);
272 return; 272 return;
273 } 273 }
274 274
275 MessageLoop::current()->PostTask( 275 base::MessageLoop::current()->PostTask(
276 FROM_HERE, 276 FROM_HERE,
277 base::Bind(&NetworkStats::SendPacket, weak_factory_.GetWeakPtr())); 277 base::Bind(&NetworkStats::SendPacket, weak_factory_.GetWeakPtr()));
278 } 278 }
279 279
280 bool NetworkStats::ReadComplete(int result) { 280 bool NetworkStats::ReadComplete(int result) {
281 DCHECK(socket_.get()); 281 DCHECK(socket_.get());
282 DCHECK_NE(net::ERR_IO_PENDING, result); 282 DCHECK_NE(net::ERR_IO_PENDING, result);
283 if (result < 0) { 283 if (result < 0) {
284 Finish(READ_FAILED, result); 284 Finish(READ_FAILED, result);
285 return true; 285 return true;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 } 317 }
318 return false; 318 return false;
319 } 319 }
320 320
321 void NetworkStats::OnReadComplete(int result) { 321 void NetworkStats::OnReadComplete(int result) {
322 if (!ReadComplete(result)) { 322 if (!ReadComplete(result)) {
323 // Called ReadData() via PostDelayedTask() to avoid recursion. Added a delay 323 // Called ReadData() via PostDelayedTask() to avoid recursion. Added a delay
324 // of 1ms so that the time-out will fire before we have time to really hog 324 // of 1ms so that the time-out will fire before we have time to really hog
325 // the CPU too extensively (waiting for the time-out) in case of an infinite 325 // the CPU too extensively (waiting for the time-out) in case of an infinite
326 // loop. 326 // loop.
327 MessageLoop::current()->PostDelayedTask( 327 base::MessageLoop::current()->PostDelayedTask(
328 FROM_HERE, 328 FROM_HERE,
329 base::Bind(&NetworkStats::ReadData, weak_factory_.GetWeakPtr()), 329 base::Bind(&NetworkStats::ReadData, weak_factory_.GetWeakPtr()),
330 base::TimeDelta::FromMilliseconds(1)); 330 base::TimeDelta::FromMilliseconds(1));
331 } 331 }
332 } 332 }
333 333
334 void NetworkStats::OnWriteComplete(int result) { 334 void NetworkStats::OnWriteComplete(int result) {
335 DCHECK(socket_.get()); 335 DCHECK(socket_.get());
336 DCHECK_NE(net::ERR_IO_PENDING, result); 336 DCHECK_NE(net::ERR_IO_PENDING, result);
337 if (result < 0) { 337 if (result < 0) {
338 Finish(WRITE_FAILED, result); 338 Finish(WRITE_FAILED, result);
339 return; 339 return;
340 } 340 }
341 341
342 DidSendData(result); 342 DidSendData(result);
343 if (bytes_to_send_) { 343 if (bytes_to_send_) {
344 int rv = SendData(); 344 int rv = SendData();
345 if (rv < 0) { 345 if (rv < 0) {
346 if (rv != net::ERR_IO_PENDING) 346 if (rv != net::ERR_IO_PENDING)
347 Finish(WRITE_FAILED, rv); 347 Finish(WRITE_FAILED, rv);
348 return; 348 return;
349 } 349 }
350 DCHECK_EQ(rv, net::OK); 350 DCHECK_EQ(rv, net::OK);
351 DCHECK_EQ(bytes_to_send_, 0u); 351 DCHECK_EQ(bytes_to_send_, 0u);
352 } 352 }
353 353
354 MessageLoop::current()->PostTask( 354 base::MessageLoop::current()->PostTask(
355 FROM_HERE, 355 FROM_HERE,
356 base::Bind(&NetworkStats::SendPacket, weak_factory_.GetWeakPtr())); 356 base::Bind(&NetworkStats::SendPacket, weak_factory_.GetWeakPtr()));
357 } 357 }
358 358
359 void NetworkStats::ReadData() { 359 void NetworkStats::ReadData() {
360 int rv; 360 int rv;
361 do { 361 do {
362 if (!socket_.get()) 362 if (!socket_.get())
363 break; 363 break;
364 364
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
425 } 425 }
426 426
427 void NetworkStats::DidSendData(int bytes_sent) { 427 void NetworkStats::DidSendData(int bytes_sent) {
428 write_buffer_->DidConsume(bytes_sent); 428 write_buffer_->DidConsume(bytes_sent);
429 if (!write_buffer_->BytesRemaining()) 429 if (!write_buffer_->BytesRemaining())
430 write_buffer_ = NULL; 430 write_buffer_ = NULL;
431 bytes_to_send_ -= bytes_sent; 431 bytes_to_send_ -= bytes_sent;
432 } 432 }
433 433
434 void NetworkStats::StartReadDataTimer(int milliseconds) { 434 void NetworkStats::StartReadDataTimer(int milliseconds) {
435 MessageLoop::current()->PostDelayedTask( 435 base::MessageLoop::current()->PostDelayedTask(
436 FROM_HERE, 436 FROM_HERE,
437 base::Bind(&NetworkStats::OnReadDataTimeout, 437 base::Bind(&NetworkStats::OnReadDataTimeout,
438 weak_factory_.GetWeakPtr(), 438 weak_factory_.GetWeakPtr(),
439 base_packet_number_), 439 base_packet_number_),
440 base::TimeDelta::FromMilliseconds(milliseconds)); 440 base::TimeDelta::FromMilliseconds(milliseconds));
441 } 441 }
442 442
443 void NetworkStats::OnReadDataTimeout(uint32 test_base_packet_number) { 443 void NetworkStats::OnReadDataTimeout(uint32 test_base_packet_number) {
444 if (test_base_packet_number != base_packet_number_) 444 if (test_base_packet_number != base_packet_number_)
445 return; 445 return;
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
642 void NetworkStats::Finish(Status status, int result) { 642 void NetworkStats::Finish(Status status, int result) {
643 // Set the base_packet_number_ for the start of next test. Changing the 643 // Set the base_packet_number_ for the start of next test. Changing the
644 // |base_packet_number_| indicates to OnReadDataTimeout that the Finish has 644 // |base_packet_number_| indicates to OnReadDataTimeout that the Finish has
645 // already been called for the test and that it doesn't need to call Finish 645 // already been called for the test and that it doesn't need to call Finish
646 // again. 646 // again.
647 base_packet_number_ = packet_number_ + 1; 647 base_packet_number_ = packet_number_ + 1;
648 RecordHistograms(PROTOCOL_UDP, status, result); 648 RecordHistograms(PROTOCOL_UDP, status, result);
649 649
650 if (next_test() == NON_PACED_PACKET_TEST || 650 if (next_test() == NON_PACED_PACKET_TEST ||
651 next_test() == PACED_PACKET_TEST) { 651 next_test() == PACED_PACKET_TEST) {
652 MessageLoop::current()->PostTask( 652 base::MessageLoop::current()->PostTask(
653 FROM_HERE, 653 FROM_HERE,
654 base::Bind(&NetworkStats::RestartPacketTest, 654 base::Bind(&NetworkStats::RestartPacketTest,
655 weak_factory_.GetWeakPtr())); 655 weak_factory_.GetWeakPtr()));
656 return; 656 return;
657 } 657 }
658 658
659 DoFinishCallback(result); 659 DoFinishCallback(result);
660 660
661 // Close the socket so that there are no more IO operations. 661 // Close the socket so that there are no more IO operations.
662 net::UDPClientSocket* udp_socket = 662 net::UDPClientSocket* udp_socket =
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after
1012 udp_stats_client->Start( 1012 udp_stats_client->Start(
1013 host_resolver, server_address, histogram_port, has_proxy_server, 1013 host_resolver, server_address, histogram_port, has_proxy_server,
1014 kLargeTestBytesToSend, kMaximumSequentialPackets, 1014 kLargeTestBytesToSend, kMaximumSequentialPackets,
1015 net::CompletionCallback()); 1015 net::CompletionCallback());
1016 } 1016 }
1017 break; 1017 break;
1018 } 1018 }
1019 } 1019 }
1020 1020
1021 } // namespace chrome_browser_net 1021 } // namespace chrome_browser_net
OLDNEW
« no previous file with comments | « chrome/browser/net/net_log_temp_file_unittest.cc ('k') | chrome/browser/net/network_stats_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698