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

Unified Diff: net/quic/quic_flow_controller.h

Issue 2193073003: Move shared files in net/quic/ into net/quic/core/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: io_thread_unittest.cc Created 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/quic/quic_flags.cc ('k') | net/quic/quic_flow_controller.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/quic/quic_flow_controller.h
diff --git a/net/quic/quic_flow_controller.h b/net/quic/quic_flow_controller.h
deleted file mode 100644
index 62ae5b65664294943e41dd225a51ac0b7f5ea806..0000000000000000000000000000000000000000
--- a/net/quic/quic_flow_controller.h
+++ /dev/null
@@ -1,171 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef NET_QUIC_QUIC_FLOW_CONTROLLER_H_
-#define NET_QUIC_QUIC_FLOW_CONTROLLER_H_
-
-#include "base/macros.h"
-#include "net/base/net_export.h"
-#include "net/quic/quic_protocol.h"
-
-namespace net {
-
-namespace test {
-class QuicFlowControllerPeer;
-} // namespace test
-
-class QuicConnection;
-
-const QuicStreamId kConnectionLevelId = 0;
-
-// QuicFlowController allows a QUIC stream or connection to perform flow
-// control. The stream/connection owns a QuicFlowController which keeps track of
-// bytes sent/received, can tell the owner if it is flow control blocked, and
-// can send WINDOW_UPDATE or BLOCKED frames when needed.
-class NET_EXPORT_PRIVATE QuicFlowController {
- public:
- QuicFlowController(QuicConnection* connection,
- QuicStreamId id,
- Perspective perspective,
- QuicStreamOffset send_window_offset,
- QuicStreamOffset receive_window_offset,
- bool should_auto_tune_receive_window);
-
- ~QuicFlowController() {}
-
- // Called when we see a new highest received byte offset from the peer, either
- // via a data frame or a RST.
- // Returns true if this call changes highest_received_byte_offset_, and false
- // in the case where |new_offset| is <= highest_received_byte_offset_.
- bool UpdateHighestReceivedOffset(QuicStreamOffset new_offset);
-
- // Called when bytes received from the peer are consumed locally. This may
- // trigger the sending of a WINDOW_UPDATE frame using |connection|.
- void AddBytesConsumed(QuicByteCount bytes_consumed);
-
- // Called when bytes are sent to the peer.
- void AddBytesSent(QuicByteCount bytes_sent);
-
- // Set a new send window offset.
- // Returns true if this increases send_window_offset_ and is now blocked.
- bool UpdateSendWindowOffset(QuicStreamOffset new_send_window_offset);
-
- // Returns the current available send window.
- QuicByteCount SendWindowSize() const;
-
- // Send a BLOCKED frame if appropriate.
- void MaybeSendBlocked();
-
- // Returns true if flow control send limits have been reached.
- bool IsBlocked() const;
-
- // Returns true if flow control receive limits have been violated by the peer.
- bool FlowControlViolation();
-
- QuicByteCount bytes_consumed() const { return bytes_consumed_; }
-
- QuicStreamOffset highest_received_byte_offset() const {
- return highest_received_byte_offset_;
- }
-
- void set_receive_window_size_limit(QuicByteCount receive_window_size_limit) {
- DCHECK_GE(receive_window_size_limit, receive_window_size_limit_);
- receive_window_size_limit_ = receive_window_size_limit;
- }
-
- void set_auto_tune_receive_window(bool enable) {
- auto_tune_receive_window_ = enable;
- }
-
- // Should only be called before any data is received.
- void UpdateReceiveWindowSize(QuicStreamOffset size);
-
- bool auto_tune_receive_window() { return auto_tune_receive_window_; }
-
- private:
- friend class test::QuicFlowControllerPeer;
-
- // Send a WINDOW_UPDATE frame if appropriate.
- void MaybeSendWindowUpdate();
-
- // Auto-tune the max receive window size.
- void MaybeIncreaseMaxWindowSize();
-
- // The parent connection, used to send connection close on flow control
- // violation, and WINDOW_UPDATE and BLOCKED frames when appropriate.
- // Not owned.
- QuicConnection* connection_;
-
- // ID of stream this flow controller belongs to. This can be 0 if this is a
- // connection level flow controller.
- QuicStreamId id_;
-
- // Tracks if this is owned by a server or a client.
- Perspective perspective_;
-
- // Tracks number of bytes sent to the peer.
- QuicByteCount bytes_sent_;
-
- // The absolute offset in the outgoing byte stream. If this offset is reached
- // then we become flow control blocked until we receive a WINDOW_UPDATE.
- QuicStreamOffset send_window_offset_;
-
- // Overview of receive flow controller.
- //
- // 0=...===1=======2-------3 ...... FIN
- // |<--- <= 4 --->|
- //
-
- // 1) bytes_consumed_ - moves forward when data is read out of the
- // stream.
- //
- // 2) highest_received_byte_offset_ - moves when data is received
- // from the peer.
- //
- // 3) receive_window_offset_ - moves when WINDOW_UPDATE is sent.
- //
- // 4) receive_window_size_ - maximum allowed unread data (3 - 1).
- // This value may be increased by auto-tuning.
- //
- // 5) receive_window_size_limit_ - limit on receive_window_size_;
- // auto-tuning will not increase window size beyond this limit.
-
- // Track number of bytes received from the peer, which have been consumed
- // locally.
- QuicByteCount bytes_consumed_;
-
- // The highest byte offset we have seen from the peer. This could be the
- // highest offset in a data frame, or a final value in a RST.
- QuicStreamOffset highest_received_byte_offset_;
-
- // The absolute offset in the incoming byte stream. The peer should never send
- // us bytes which are beyond this offset.
- QuicStreamOffset receive_window_offset_;
-
- // Largest size the receive window can grow to.
- QuicByteCount receive_window_size_;
-
- // Upper limit on receive_window_size_;
- QuicByteCount receive_window_size_limit_;
-
- // Used to dynamically enable receive window auto-tuning.
- bool auto_tune_receive_window_;
-
- // Send window update when receive window size drops below this.
- QuicByteCount WindowUpdateThreshold();
-
- // Keep track of the last time we sent a BLOCKED frame. We should only send
- // another when the number of bytes we have sent has changed.
- QuicStreamOffset last_blocked_send_window_offset_;
-
- // Keep time of the last time a window update was sent. We use this
- // as part of the receive window auto tuning.
- QuicTime prev_window_update_time_;
-
- DISALLOW_COPY_AND_ASSIGN(QuicFlowController);
-};
-
-} // namespace net
-
-#endif // NET_QUIC_QUIC_FLOW_CONTROLLER_H_
« no previous file with comments | « net/quic/quic_flags.cc ('k') | net/quic/quic_flow_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698