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

Side by Side Diff: net/quic/congestion_control/quic_congestion_manager.h

Issue 76723002: Land Recent QUIC Changes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix compilation error Created 7 years, 1 month 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 | « no previous file | net/quic/congestion_control/quic_congestion_manager.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 // This is the interface from the QuicConnection into the QUIC 5 // This is the interface from the QuicConnection into the QUIC
6 // congestion control code. It wraps the SendAlgorithmInterface and 6 // congestion control code. It wraps the SendAlgorithmInterface and
7 // ReceiveAlgorithmInterface and provides a single interface 7 // ReceiveAlgorithmInterface and provides a single interface
8 // for consumers. 8 // for consumers.
9 9
10 #ifndef NET_QUIC_CONGESTION_CONTROL_QUIC_CONGESTION_MANAGER_H_ 10 #ifndef NET_QUIC_CONGESTION_CONTROL_QUIC_CONGESTION_MANAGER_H_
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 virtual void RecordIncomingPacket(QuicByteCount bytes, 80 virtual void RecordIncomingPacket(QuicByteCount bytes,
81 QuicPacketSequenceNumber sequence_number, 81 QuicPacketSequenceNumber sequence_number,
82 QuicTime timestamp, 82 QuicTime timestamp,
83 bool revived); 83 bool revived);
84 84
85 const QuicTime::Delta DefaultRetransmissionTime(); 85 const QuicTime::Delta DefaultRetransmissionTime();
86 86
87 // Returns amount of time for delayed ack timer. 87 // Returns amount of time for delayed ack timer.
88 const QuicTime::Delta DelayedAckTime(); 88 const QuicTime::Delta DelayedAckTime();
89 89
90 // Returns the current RTO delay. |unacked_packet_count| is the number of
91 // currently outstanding packets. |number_retransmissions| is the number of
92 // sequential retransmission timeouts that have occrued.
90 const QuicTime::Delta GetRetransmissionDelay( 93 const QuicTime::Delta GetRetransmissionDelay(
91 size_t unacked_packets_count, 94 size_t unacked_packets_count,
92 size_t number_retransmissions) const; 95 size_t number_retransmissions) const;
93 96
94 // Returns the estimated smoothed RTT calculated by the congestion algorithm. 97 // Returns the estimated smoothed RTT calculated by the congestion algorithm.
95 const QuicTime::Delta SmoothedRtt() const; 98 const QuicTime::Delta SmoothedRtt() const;
96 99
97 // Returns the estimated bandwidth calculated by the congestion algorithm. 100 // Returns the estimated bandwidth calculated by the congestion algorithm.
98 QuicBandwidth BandwidthEstimate() const; 101 QuicBandwidth BandwidthEstimate() const;
99 102
100 // Returns the size of the current congestion window in bytes. Note, this is 103 // Returns the size of the current congestion window in bytes. Note, this is
101 // not the *available* window. Some send algorithms may not use a congestion 104 // not the *available* window. Some send algorithms may not use a congestion
102 // window and will return 0. 105 // window and will return 0.
103 QuicByteCount GetCongestionWindow() const; 106 QuicByteCount GetCongestionWindow() const;
104 107
105 // Sets the value of the current congestion window to |window|. 108 // Sets the value of the current congestion window to |window|.
106 void SetCongestionWindow(QuicByteCount window); 109 void SetCongestionWindow(QuicByteCount window);
107 110
108 private: 111 private:
109 friend class test::QuicConnectionPeer; 112 friend class test::QuicConnectionPeer;
110 friend class test::QuicCongestionManagerPeer; 113 friend class test::QuicCongestionManagerPeer;
111 typedef std::map<QuicPacketSequenceNumber, size_t> PendingPacketsMap; 114 typedef std::map<QuicPacketSequenceNumber, size_t> PendingPacketsMap;
112 115
113 // Get the current(last) rtt. Infinite is returned if invalid.
114 const QuicTime::Delta rtt();
115
116 void CleanupPacketHistory(); 116 void CleanupPacketHistory();
117 117
118 const QuicClock* clock_; 118 const QuicClock* clock_;
119 scoped_ptr<ReceiveAlgorithmInterface> receive_algorithm_; 119 scoped_ptr<ReceiveAlgorithmInterface> receive_algorithm_;
120 scoped_ptr<SendAlgorithmInterface> send_algorithm_; 120 scoped_ptr<SendAlgorithmInterface> send_algorithm_;
121 SendAlgorithmInterface::SentPacketsMap packet_history_map_; 121 SendAlgorithmInterface::SentPacketsMap packet_history_map_;
122 PendingPacketsMap pending_packets_; 122 PendingPacketsMap pending_packets_;
123 QuicPacketSequenceNumber largest_missing_; 123 QuicPacketSequenceNumber largest_missing_;
124 QuicTime::Delta current_rtt_; 124 QuicTime::Delta rtt_sample_; // RTT estimate from the most recent ACK.
125 125
126 DISALLOW_COPY_AND_ASSIGN(QuicCongestionManager); 126 DISALLOW_COPY_AND_ASSIGN(QuicCongestionManager);
127 }; 127 };
128 128
129 } // namespace net 129 } // namespace net
130 130
131 #endif // NET_QUIC_CONGESTION_CONTROL_QUIC_CONGESTION_MANAGER_H_ 131 #endif // NET_QUIC_CONGESTION_CONTROL_QUIC_CONGESTION_MANAGER_H_
OLDNEW
« no previous file with comments | « no previous file | net/quic/congestion_control/quic_congestion_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698