| Index: net/quic/quic_sent_packet_manager.h
|
| diff --git a/net/quic/quic_sent_packet_manager.h b/net/quic/quic_sent_packet_manager.h
|
| index 2e3c05d34134dc4c80320f36b2dd719f41971b69..342dd3d4653144005b9ad3ae86db254a8ba58c10 100644
|
| --- a/net/quic/quic_sent_packet_manager.h
|
| +++ b/net/quic/quic_sent_packet_manager.h
|
| @@ -21,6 +21,7 @@
|
| #include "net/quic/congestion_control/send_algorithm_interface.h"
|
| #include "net/quic/quic_ack_notifier_manager.h"
|
| #include "net/quic/quic_protocol.h"
|
| +#include "net/quic/quic_sustained_bandwidth_recorder.h"
|
| #include "net/quic/quic_unacked_packet_map.h"
|
|
|
| namespace net {
|
| @@ -197,9 +198,11 @@ class NET_EXPORT_PRIVATE QuicSentPacketManager {
|
| // Returns the estimated bandwidth calculated by the congestion algorithm.
|
| QuicBandwidth BandwidthEstimate() const;
|
|
|
| - // Returns true if the current bandwidth estimate is reliable.
|
| + // Returns true if the current instantaneous bandwidth estimate is reliable.
|
| bool HasReliableBandwidthEstimate() const;
|
|
|
| + const QuicSustainedBandwidthRecorder& SustainedBandwidthRecorder() const;
|
| +
|
| // Returns the size of the current congestion window in bytes. Note, this is
|
| // not the *available* window. Some send algorithms may not use a congestion
|
| // window and will return 0.
|
| @@ -220,7 +223,11 @@ class NET_EXPORT_PRIVATE QuicSentPacketManager {
|
| }
|
|
|
| QuicPacketSequenceNumber largest_observed() const {
|
| - return largest_observed_;
|
| + return unacked_packets_.largest_observed();
|
| + }
|
| +
|
| + QuicPacketSequenceNumber least_packet_awaited_by_peer() {
|
| + return least_packet_awaited_by_peer_;
|
| }
|
|
|
| void set_network_change_visitor(NetworkChangeVisitor* visitor) {
|
| @@ -258,6 +265,9 @@ class NET_EXPORT_PRIVATE QuicSentPacketManager {
|
| typedef linked_hash_map<QuicPacketSequenceNumber,
|
| TransmissionType> PendingRetransmissionMap;
|
|
|
| + // Updates the least_packet_awaited_by_peer.
|
| + void UpdatePacketInformationReceivedByPeer(const QuicAckFrame& ack_frame);
|
| +
|
| // Process the incoming ack looking for newly ack'd data packets.
|
| void HandleAckForSentPackets(const QuicAckFrame& ack_frame);
|
|
|
| @@ -348,9 +358,8 @@ class NET_EXPORT_PRIVATE QuicSentPacketManager {
|
| scoped_ptr<SendAlgorithmInterface> send_algorithm_;
|
| scoped_ptr<LossDetectionInterface> loss_algorithm_;
|
|
|
| - // The largest sequence number which we have sent and received an ACK for
|
| - // from the peer.
|
| - QuicPacketSequenceNumber largest_observed_;
|
| + // Least sequence number which the peer is still waiting for.
|
| + QuicPacketSequenceNumber least_packet_awaited_by_peer_;
|
|
|
| // Tracks the first RTO packet. If any packet before that packet gets acked,
|
| // it indicates the RTO was spurious and should be reversed(F-RTO).
|
| @@ -377,6 +386,10 @@ class NET_EXPORT_PRIVATE QuicSentPacketManager {
|
| // retransmittable frames.
|
| bool handshake_confirmed_;
|
|
|
| + // Records bandwidth from server to client in normal operation, over periods
|
| + // of time with no loss events.
|
| + QuicSustainedBandwidthRecorder sustained_bandwidth_recorder_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(QuicSentPacketManager);
|
| };
|
|
|
|
|