Index: net/quic/congestion_control/prr_sender.h |
diff --git a/net/quic/congestion_control/prr_sender.h b/net/quic/congestion_control/prr_sender.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..495943de5ba2c84058d1ca11bf4f5122070989c6 |
--- /dev/null |
+++ b/net/quic/congestion_control/prr_sender.h |
@@ -0,0 +1,43 @@ |
+// Copyright (c) 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. |
+// |
+// Implements Proportional Rate Reduction (PRR) per RFC 6937. |
+ |
+#ifndef NET_QUIC_CONGESTION_CONTROL_PRR_SENDER_H_ |
+#define NET_QUIC_CONGESTION_CONTROL_PRR_SENDER_H_ |
+ |
+#include "net/quic/quic_bandwidth.h" |
+#include "net/quic/quic_time.h" |
+ |
+namespace net { |
+ |
+class NET_EXPORT_PRIVATE PrrSender { |
+ public: |
+ PrrSender(); |
+ // OnPacketLost should be called on the first loss that triggers a recovery |
+ // period and all other methods in this class should only be called when in |
+ // recovery. |
+ void OnPacketLost(QuicByteCount bytes_in_flight); |
+ void OnPacketSent(QuicByteCount sent_bytes); |
+ void OnPacketAcked(QuicByteCount acked_bytes); |
+ QuicTime::Delta TimeUntilSend(QuicByteCount congestion_window, |
+ QuicByteCount bytes_in_flight, |
+ QuicPacketCount slowstart_threshold) |
+ const; |
+ |
+ private: |
+ // Bytes sent and acked since the last loss event. |
+ // |bytes_sent_since_loss_| is the same as "prr_out_" in RFC 6937, |
+ // and |bytes_delivered_since_loss_| is the same as "prr_delivered_". |
+ QuicByteCount bytes_sent_since_loss_; |
+ QuicByteCount bytes_delivered_since_loss_; |
+ size_t ack_count_since_loss_; |
+ |
+ // The congestion window before the last loss event. |
+ QuicByteCount bytes_in_flight_before_loss_; |
+}; |
+ |
+} // namespace net |
+ |
+#endif // NET_QUIC_CONGESTION_CONTROL_PRR_SENDER_H_ |