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

Side by Side Diff: net/quic/reliable_quic_stream.cc

Issue 394053003: QUIC - minor cleanup changes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge with TOT Created 6 years, 5 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/quic/quic_protocol.h ('k') | net/tools/quic/end_to_end_test.cc » ('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) 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 "net/quic/reliable_quic_stream.h" 5 #include "net/quic/reliable_quic_stream.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "net/quic/iovector.h" 8 #include "net/quic/iovector.h"
9 #include "net/quic/quic_flow_controller.h" 9 #include "net/quic/quic_flow_controller.h"
10 #include "net/quic/quic_session.h" 10 #include "net/quic/quic_session.h"
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 delegate->WroteData(false); 326 delegate->WroteData(false);
327 } 327 }
328 } 328 }
329 break; 329 break;
330 } 330 }
331 } 331 }
332 } 332 }
333 333
334 void ReliableQuicStream::MaybeSendBlocked() { 334 void ReliableQuicStream::MaybeSendBlocked() {
335 flow_controller_.MaybeSendBlocked(); 335 flow_controller_.MaybeSendBlocked();
336 if (stream_contributes_to_connection_flow_control_) { 336 if (!stream_contributes_to_connection_flow_control_) {
337 connection_flow_controller_->MaybeSendBlocked(); 337 return;
338 } 338 }
339 connection_flow_controller_->MaybeSendBlocked();
339 // If we are connection level flow control blocked, then add the stream 340 // If we are connection level flow control blocked, then add the stream
340 // to the write blocked list. It will be given a chance to write when a 341 // to the write blocked list. It will be given a chance to write when a
341 // connection level WINDOW_UPDATE arrives. 342 // connection level WINDOW_UPDATE arrives.
342 if (stream_contributes_to_connection_flow_control_ && 343 if (connection_flow_controller_->IsBlocked() &&
343 connection_flow_controller_->IsBlocked() &&
344 !flow_controller_.IsBlocked()) { 344 !flow_controller_.IsBlocked()) {
345 session_->MarkWriteBlocked(id(), EffectivePriority()); 345 session_->MarkWriteBlocked(id(), EffectivePriority());
346 } 346 }
347 } 347 }
348 348
349 QuicConsumedData ReliableQuicStream::WritevData( 349 QuicConsumedData ReliableQuicStream::WritevData(
350 const struct iovec* iov, 350 const struct iovec* iov,
351 int iov_count, 351 int iov_count,
352 bool fin, 352 bool fin,
353 QuicAckNotifier::DelegateInterface* ack_notifier_delegate) { 353 QuicAckNotifier::DelegateInterface* ack_notifier_delegate) {
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
483 // We can write again! 483 // We can write again!
484 // TODO(rjshade): This does not respect priorities (e.g. multiple 484 // TODO(rjshade): This does not respect priorities (e.g. multiple
485 // outstanding POSTs are unblocked on arrival of 485 // outstanding POSTs are unblocked on arrival of
486 // SHLO with initial window). 486 // SHLO with initial window).
487 // As long as the connection is not flow control blocked, we can write! 487 // As long as the connection is not flow control blocked, we can write!
488 OnCanWrite(); 488 OnCanWrite();
489 } 489 }
490 } 490 }
491 491
492 bool ReliableQuicStream::MaybeIncreaseHighestReceivedOffset(uint64 new_offset) { 492 bool ReliableQuicStream::MaybeIncreaseHighestReceivedOffset(uint64 new_offset) {
493 if (flow_controller_.IsEnabled()) { 493 if (!flow_controller_.IsEnabled()) {
494 uint64 increment = 494 return false;
495 new_offset - flow_controller_.highest_received_byte_offset();
496 if (flow_controller_.UpdateHighestReceivedOffset(new_offset)) {
497 // If |new_offset| increased the stream flow controller's highest received
498 // offset, then we need to increase the connection flow controller's value
499 // by the incremental difference.
500 if (stream_contributes_to_connection_flow_control_) {
501 connection_flow_controller_->UpdateHighestReceivedOffset(
502 connection_flow_controller_->highest_received_byte_offset() +
503 increment);
504 }
505 return true;
506 }
507 } 495 }
508 return false; 496 uint64 increment =
497 new_offset - flow_controller_.highest_received_byte_offset();
498 if (!flow_controller_.UpdateHighestReceivedOffset(new_offset)) {
499 return false;
500 }
501
502 // If |new_offset| increased the stream flow controller's highest received
503 // offset, then we need to increase the connection flow controller's value
504 // by the incremental difference.
505 if (stream_contributes_to_connection_flow_control_) {
506 connection_flow_controller_->UpdateHighestReceivedOffset(
507 connection_flow_controller_->highest_received_byte_offset() +
508 increment);
509 }
510 return true;
509 } 511 }
510 512
511 void ReliableQuicStream::AddBytesSent(uint64 bytes) { 513 void ReliableQuicStream::AddBytesSent(uint64 bytes) {
512 if (flow_controller_.IsEnabled()) { 514 if (flow_controller_.IsEnabled()) {
513 flow_controller_.AddBytesSent(bytes); 515 flow_controller_.AddBytesSent(bytes);
514 if (stream_contributes_to_connection_flow_control_) { 516 if (stream_contributes_to_connection_flow_control_) {
515 connection_flow_controller_->AddBytesSent(bytes); 517 connection_flow_controller_->AddBytesSent(bytes);
516 } 518 }
517 } 519 }
518 } 520 }
519 521
520 void ReliableQuicStream::AddBytesConsumed(uint64 bytes) { 522 void ReliableQuicStream::AddBytesConsumed(uint64 bytes) {
521 if (flow_controller_.IsEnabled()) { 523 if (flow_controller_.IsEnabled()) {
522 // Only adjust stream level flow controller if we are still reading. 524 // Only adjust stream level flow controller if we are still reading.
523 if (!read_side_closed_) { 525 if (!read_side_closed_) {
524 flow_controller_.AddBytesConsumed(bytes); 526 flow_controller_.AddBytesConsumed(bytes);
525 } 527 }
526 528
527 if (stream_contributes_to_connection_flow_control_) { 529 if (stream_contributes_to_connection_flow_control_) {
528 connection_flow_controller_->AddBytesConsumed(bytes); 530 connection_flow_controller_->AddBytesConsumed(bytes);
529 } 531 }
530 } 532 }
531 } 533 }
532 534
533 bool ReliableQuicStream::IsFlowControlBlocked() { 535 bool ReliableQuicStream::IsFlowControlBlocked() {
534 bool stream_flow_control_blocked = flow_controller_.IsBlocked(); 536 if (flow_controller_.IsBlocked()) {
535 bool connecton_flow_control_blocked = 537 return true;
536 stream_contributes_to_connection_flow_control_ && 538 }
539 return stream_contributes_to_connection_flow_control_ &&
537 connection_flow_controller_->IsBlocked(); 540 connection_flow_controller_->IsBlocked();
538 return stream_flow_control_blocked || connecton_flow_control_blocked;
539 } 541 }
540 542
541 } // namespace net 543 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_protocol.h ('k') | net/tools/quic/end_to_end_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698