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

Side by Side Diff: net/http/http_network_transaction.cc

Issue 42541: Prioritize which HTTP requests get a socket first by adding a priority level ... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 9 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
« no previous file with comments | « net/base/client_socket_pool_unittest.cc ('k') | net/http/http_request_info.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) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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/http/http_network_transaction.h" 5 #include "net/http/http_network_transaction.h"
6 6
7 #include "base/scoped_ptr.h" 7 #include "base/scoped_ptr.h"
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/field_trial.h" 9 #include "base/field_trial.h"
10 #include "base/string_util.h" 10 #include "base/string_util.h"
(...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after
370 370
371 int HttpNetworkTransaction::DoLoop(int result) { 371 int HttpNetworkTransaction::DoLoop(int result) {
372 DCHECK(next_state_ != STATE_NONE); 372 DCHECK(next_state_ != STATE_NONE);
373 373
374 int rv = result; 374 int rv = result;
375 do { 375 do {
376 State state = next_state_; 376 State state = next_state_;
377 next_state_ = STATE_NONE; 377 next_state_ = STATE_NONE;
378 switch (state) { 378 switch (state) {
379 case STATE_RESOLVE_PROXY: 379 case STATE_RESOLVE_PROXY:
380 DCHECK(rv == OK); 380 DCHECK_EQ(OK, rv);
381 TRACE_EVENT_BEGIN("http.resolve_proxy", request_, request_->url.spec()); 381 TRACE_EVENT_BEGIN("http.resolve_proxy", request_, request_->url.spec());
382 rv = DoResolveProxy(); 382 rv = DoResolveProxy();
383 break; 383 break;
384 case STATE_RESOLVE_PROXY_COMPLETE: 384 case STATE_RESOLVE_PROXY_COMPLETE:
385 rv = DoResolveProxyComplete(rv); 385 rv = DoResolveProxyComplete(rv);
386 TRACE_EVENT_END("http.resolve_proxy", request_, request_->url.spec()); 386 TRACE_EVENT_END("http.resolve_proxy", request_, request_->url.spec());
387 break; 387 break;
388 case STATE_INIT_CONNECTION: 388 case STATE_INIT_CONNECTION:
389 DCHECK(rv == OK); 389 DCHECK_EQ(OK, rv);
390 TRACE_EVENT_BEGIN("http.init_conn", request_, request_->url.spec()); 390 TRACE_EVENT_BEGIN("http.init_conn", request_, request_->url.spec());
391 rv = DoInitConnection(); 391 rv = DoInitConnection();
392 break; 392 break;
393 case STATE_INIT_CONNECTION_COMPLETE: 393 case STATE_INIT_CONNECTION_COMPLETE:
394 rv = DoInitConnectionComplete(rv); 394 rv = DoInitConnectionComplete(rv);
395 TRACE_EVENT_END("http.init_conn", request_, request_->url.spec()); 395 TRACE_EVENT_END("http.init_conn", request_, request_->url.spec());
396 break; 396 break;
397 case STATE_RESOLVE_HOST: 397 case STATE_RESOLVE_HOST:
398 DCHECK(rv == OK); 398 DCHECK_EQ(OK, rv);
399 TRACE_EVENT_BEGIN("http.resolve_host", request_, request_->url.spec()); 399 TRACE_EVENT_BEGIN("http.resolve_host", request_, request_->url.spec());
400 rv = DoResolveHost(); 400 rv = DoResolveHost();
401 break; 401 break;
402 case STATE_RESOLVE_HOST_COMPLETE: 402 case STATE_RESOLVE_HOST_COMPLETE:
403 rv = DoResolveHostComplete(rv); 403 rv = DoResolveHostComplete(rv);
404 TRACE_EVENT_END("http.resolve_host", request_, request_->url.spec()); 404 TRACE_EVENT_END("http.resolve_host", request_, request_->url.spec());
405 break; 405 break;
406 case STATE_CONNECT: 406 case STATE_CONNECT:
407 DCHECK(rv == OK); 407 DCHECK_EQ(OK, rv);
408 TRACE_EVENT_BEGIN("http.connect", request_, request_->url.spec()); 408 TRACE_EVENT_BEGIN("http.connect", request_, request_->url.spec());
409 rv = DoConnect(); 409 rv = DoConnect();
410 break; 410 break;
411 case STATE_CONNECT_COMPLETE: 411 case STATE_CONNECT_COMPLETE:
412 rv = DoConnectComplete(rv); 412 rv = DoConnectComplete(rv);
413 TRACE_EVENT_END("http.connect", request_, request_->url.spec()); 413 TRACE_EVENT_END("http.connect", request_, request_->url.spec());
414 break; 414 break;
415 case STATE_SSL_CONNECT_OVER_TUNNEL: 415 case STATE_SSL_CONNECT_OVER_TUNNEL:
416 DCHECK(rv == OK); 416 DCHECK_EQ(OK, rv);
417 TRACE_EVENT_BEGIN("http.ssl_tunnel", request_, request_->url.spec()); 417 TRACE_EVENT_BEGIN("http.ssl_tunnel", request_, request_->url.spec());
418 rv = DoSSLConnectOverTunnel(); 418 rv = DoSSLConnectOverTunnel();
419 break; 419 break;
420 case STATE_SSL_CONNECT_OVER_TUNNEL_COMPLETE: 420 case STATE_SSL_CONNECT_OVER_TUNNEL_COMPLETE:
421 rv = DoSSLConnectOverTunnelComplete(rv); 421 rv = DoSSLConnectOverTunnelComplete(rv);
422 TRACE_EVENT_END("http.ssl_tunnel", request_, request_->url.spec()); 422 TRACE_EVENT_END("http.ssl_tunnel", request_, request_->url.spec());
423 break; 423 break;
424 case STATE_WRITE_HEADERS: 424 case STATE_WRITE_HEADERS:
425 DCHECK(rv == OK); 425 DCHECK_EQ(OK, rv);
426 TRACE_EVENT_BEGIN("http.write_headers", request_, request_->url.spec()); 426 TRACE_EVENT_BEGIN("http.write_headers", request_, request_->url.spec());
427 rv = DoWriteHeaders(); 427 rv = DoWriteHeaders();
428 break; 428 break;
429 case STATE_WRITE_HEADERS_COMPLETE: 429 case STATE_WRITE_HEADERS_COMPLETE:
430 rv = DoWriteHeadersComplete(rv); 430 rv = DoWriteHeadersComplete(rv);
431 TRACE_EVENT_END("http.write_headers", request_, request_->url.spec()); 431 TRACE_EVENT_END("http.write_headers", request_, request_->url.spec());
432 break; 432 break;
433 case STATE_WRITE_BODY: 433 case STATE_WRITE_BODY:
434 DCHECK(rv == OK); 434 DCHECK_EQ(OK, rv);
435 TRACE_EVENT_BEGIN("http.write_body", request_, request_->url.spec()); 435 TRACE_EVENT_BEGIN("http.write_body", request_, request_->url.spec());
436 rv = DoWriteBody(); 436 rv = DoWriteBody();
437 break; 437 break;
438 case STATE_WRITE_BODY_COMPLETE: 438 case STATE_WRITE_BODY_COMPLETE:
439 rv = DoWriteBodyComplete(rv); 439 rv = DoWriteBodyComplete(rv);
440 TRACE_EVENT_END("http.write_body", request_, request_->url.spec()); 440 TRACE_EVENT_END("http.write_body", request_, request_->url.spec());
441 break; 441 break;
442 case STATE_READ_HEADERS: 442 case STATE_READ_HEADERS:
443 DCHECK(rv == OK); 443 DCHECK_EQ(OK, rv);
444 TRACE_EVENT_BEGIN("http.read_headers", request_, request_->url.spec()); 444 TRACE_EVENT_BEGIN("http.read_headers", request_, request_->url.spec());
445 rv = DoReadHeaders(); 445 rv = DoReadHeaders();
446 break; 446 break;
447 case STATE_READ_HEADERS_COMPLETE: 447 case STATE_READ_HEADERS_COMPLETE:
448 rv = DoReadHeadersComplete(rv); 448 rv = DoReadHeadersComplete(rv);
449 TRACE_EVENT_END("http.read_headers", request_, request_->url.spec()); 449 TRACE_EVENT_END("http.read_headers", request_, request_->url.spec());
450 break; 450 break;
451 case STATE_READ_BODY: 451 case STATE_READ_BODY:
452 DCHECK(rv == OK); 452 DCHECK_EQ(OK, rv);
453 TRACE_EVENT_BEGIN("http.read_body", request_, request_->url.spec()); 453 TRACE_EVENT_BEGIN("http.read_body", request_, request_->url.spec());
454 rv = DoReadBody(); 454 rv = DoReadBody();
455 break; 455 break;
456 case STATE_READ_BODY_COMPLETE: 456 case STATE_READ_BODY_COMPLETE:
457 rv = DoReadBodyComplete(rv); 457 rv = DoReadBodyComplete(rv);
458 TRACE_EVENT_END("http.read_body", request_, request_->url.spec()); 458 TRACE_EVENT_END("http.read_body", request_, request_->url.spec());
459 break; 459 break;
460 case STATE_DRAIN_BODY_FOR_AUTH_RESTART: 460 case STATE_DRAIN_BODY_FOR_AUTH_RESTART:
461 DCHECK(rv == OK); 461 DCHECK_EQ(OK, rv);
462 TRACE_EVENT_BEGIN("http.drain_body_for_auth_restart", 462 TRACE_EVENT_BEGIN("http.drain_body_for_auth_restart",
463 request_, request_->url.spec()); 463 request_, request_->url.spec());
464 rv = DoDrainBodyForAuthRestart(); 464 rv = DoDrainBodyForAuthRestart();
465 break; 465 break;
466 case STATE_DRAIN_BODY_FOR_AUTH_RESTART_COMPLETE: 466 case STATE_DRAIN_BODY_FOR_AUTH_RESTART_COMPLETE:
467 rv = DoDrainBodyForAuthRestartComplete(rv); 467 rv = DoDrainBodyForAuthRestartComplete(rv);
468 TRACE_EVENT_END("http.drain_body_for_auth_restart", 468 TRACE_EVENT_END("http.drain_body_for_auth_restart",
469 request_, request_->url.spec()); 469 request_, request_->url.spec());
470 break; 470 break;
471 default: 471 default:
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
520 using_tunnel_ = !proxy_info_.is_direct() && using_ssl_; 520 using_tunnel_ = !proxy_info_.is_direct() && using_ssl_;
521 521
522 // Build the string used to uniquely identify connections of this type. 522 // Build the string used to uniquely identify connections of this type.
523 std::string connection_group; 523 std::string connection_group;
524 if (using_proxy_ || using_tunnel_) 524 if (using_proxy_ || using_tunnel_)
525 connection_group = "proxy/" + proxy_info_.proxy_server().ToURI() + "/"; 525 connection_group = "proxy/" + proxy_info_.proxy_server().ToURI() + "/";
526 if (!using_proxy_) 526 if (!using_proxy_)
527 connection_group.append(request_->url.GetOrigin().spec()); 527 connection_group.append(request_->url.GetOrigin().spec());
528 528
529 DCHECK(!connection_group.empty()); 529 DCHECK(!connection_group.empty());
530 return connection_.Init(connection_group, &io_callback_); 530 return connection_.Init(connection_group, request_->priority, &io_callback_);
531 } 531 }
532 532
533 int HttpNetworkTransaction::DoInitConnectionComplete(int result) { 533 int HttpNetworkTransaction::DoInitConnectionComplete(int result) {
534 if (result < 0) 534 if (result < 0)
535 return result; 535 return result;
536 536
537 DCHECK(connection_.is_initialized()); 537 DCHECK(connection_.is_initialized());
538 538
539 // Set the reused_socket_ flag to indicate that we are using a keep-alive 539 // Set the reused_socket_ flag to indicate that we are using a keep-alive
540 // connection. This flag is used to handle errors that occur while we are 540 // connection. This flag is used to handle errors that occur while we are
(...skipping 971 matching lines...) Expand 10 before | Expand all | Expand 10 after
1512 if (target == HttpAuth::AUTH_PROXY) { 1512 if (target == HttpAuth::AUTH_PROXY) {
1513 auth_info->host = ASCIIToWide(proxy_info_.proxy_server().host_and_port()); 1513 auth_info->host = ASCIIToWide(proxy_info_.proxy_server().host_and_port());
1514 } else { 1514 } else {
1515 DCHECK(target == HttpAuth::AUTH_SERVER); 1515 DCHECK(target == HttpAuth::AUTH_SERVER);
1516 auth_info->host = ASCIIToWide(request_->url.host()); 1516 auth_info->host = ASCIIToWide(request_->url.host());
1517 } 1517 }
1518 response_.auth_challenge = auth_info; 1518 response_.auth_challenge = auth_info;
1519 } 1519 }
1520 1520
1521 } // namespace net 1521 } // namespace net
OLDNEW
« no previous file with comments | « net/base/client_socket_pool_unittest.cc ('k') | net/http/http_request_info.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698