Index: net/quic/quic_unacked_packet_map.h |
diff --git a/net/quic/quic_unacked_packet_map.h b/net/quic/quic_unacked_packet_map.h |
deleted file mode 100644 |
index 4185a32a465e41e79a7e87fee4071a7bcb498ecc..0000000000000000000000000000000000000000 |
--- a/net/quic/quic_unacked_packet_map.h |
+++ /dev/null |
@@ -1,195 +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_UNACKED_PACKET_MAP_H_ |
-#define NET_QUIC_QUIC_UNACKED_PACKET_MAP_H_ |
- |
-#include <stddef.h> |
- |
-#include <deque> |
- |
-#include "base/macros.h" |
-#include "net/quic/quic_protocol.h" |
- |
-namespace net { |
- |
-class AckNotifierManager; |
- |
-// Class which tracks unacked packets for three purposes: |
-// 1) Track retransmittable data, including multiple transmissions of frames. |
-// 2) Track packets and bytes in flight for congestion control. |
-// 3) Track sent time of packets to provide RTT measurements from acks. |
-class NET_EXPORT_PRIVATE QuicUnackedPacketMap { |
- public: |
- QuicUnackedPacketMap(); |
- ~QuicUnackedPacketMap(); |
- |
- // Adds |serialized_packet| to the map and marks it as sent at |sent_time|. |
- // Marks the packet as in flight if |set_in_flight| is true. |
- // Packets marked as in flight are expected to be marked as missing when they |
- // don't arrive, indicating the need for retransmission. |
- // |old_packet_number| is the packet number of the previous transmission, |
- // or 0 if there was none. |
- // Any AckNotifierWrappers in |serialized_packet| are swapped from the |
- // serialized packet into the TransmissionInfo. |
- void AddSentPacket(SerializedPacket* serialized_packet, |
- QuicPacketNumber old_packet_number, |
- TransmissionType transmission_type, |
- QuicTime sent_time, |
- bool set_in_flight); |
- |
- // Returns true if the packet |packet_number| is unacked. |
- bool IsUnacked(QuicPacketNumber packet_number) const; |
- |
- // Notifies all the AckListeners attached to the |info| and |
- // clears them to ensure they're not notified again. |
- void NotifyAndClearListeners(std::list<AckListenerWrapper>* ack_listeners, |
- QuicTime::Delta delta_largest_observed); |
- |
- // Notifies all the AckListeners attached to |newest_transmission|. |
- void NotifyAndClearListeners(QuicPacketNumber newest_transmission, |
- QuicTime::Delta delta_largest_observed); |
- |
- // Marks |info| as no longer in flight. |
- void RemoveFromInFlight(TransmissionInfo* info); |
- |
- // Marks |packet_number| as no longer in flight. |
- void RemoveFromInFlight(QuicPacketNumber packet_number); |
- |
- // Marks |packet_number| as in flight. Must not be unackable. |
- void RestoreToInFlight(QuicPacketNumber packet_number); |
- |
- // No longer retransmit data for |stream_id|. |
- void CancelRetransmissionsForStream(QuicStreamId stream_id); |
- |
- // Returns true if the unacked packet |packet_number| has retransmittable |
- // frames. This will return false if the packet has been acked, if a |
- // previous transmission of this packet was ACK'd, or if this packet has been |
- // retransmitted as with different packet number, or if the packet never |
- // had any retransmittable packets in the first place. |
- bool HasRetransmittableFrames(QuicPacketNumber packet_number) const; |
- |
- // Returns true if there are any unacked packets. |
- bool HasUnackedPackets() const; |
- |
- // Returns true if there are any unacked packets which have retransmittable |
- // frames. |
- bool HasUnackedRetransmittableFrames() const; |
- |
- // Returns the largest packet number that has been sent. |
- QuicPacketNumber largest_sent_packet() const { return largest_sent_packet_; } |
- |
- // Returns the largest packet number that has been acked. |
- QuicPacketNumber largest_observed() const { return largest_observed_; } |
- |
- // Returns the sum of bytes from all packets in flight. |
- QuicByteCount bytes_in_flight() const { return bytes_in_flight_; } |
- |
- // Returns the smallest packet number of a serialized packet which has not |
- // been acked by the peer. If there are no unacked packets, returns 0. |
- QuicPacketNumber GetLeastUnacked() const; |
- |
- typedef std::deque<TransmissionInfo> UnackedPacketMap; |
- |
- typedef UnackedPacketMap::const_iterator const_iterator; |
- typedef UnackedPacketMap::iterator iterator; |
- |
- const_iterator begin() const { return unacked_packets_.begin(); } |
- const_iterator end() const { return unacked_packets_.end(); } |
- iterator begin() { return unacked_packets_.begin(); } |
- iterator end() { return unacked_packets_.end(); } |
- |
- // Returns true if there are unacked packets that are in flight. |
- bool HasInFlightPackets() const; |
- |
- // Returns the TransmissionInfo associated with |packet_number|, which |
- // must be unacked. |
- const TransmissionInfo& GetTransmissionInfo( |
- QuicPacketNumber packet_number) const; |
- |
- // Returns mutable TransmissionInfo associated with |packet_number|, which |
- // must be unacked. |
- TransmissionInfo* GetMutableTransmissionInfo(QuicPacketNumber packet_number); |
- |
- // Returns the time that the last unacked packet was sent. |
- QuicTime GetLastPacketSentTime() const; |
- |
- // Returns the number of unacked packets. |
- size_t GetNumUnackedPacketsDebugOnly() const; |
- |
- // Returns true if there are multiple packets in flight. |
- bool HasMultipleInFlightPackets() const; |
- |
- // Returns true if there are any pending crypto packets. |
- bool HasPendingCryptoPackets() const; |
- |
- // Removes any retransmittable frames from this transmission or an associated |
- // transmission. It removes now useless transmissions, and disconnects any |
- // other packets from other transmissions. |
- void RemoveRetransmittability(TransmissionInfo* info); |
- |
- // Looks up the TransmissionInfo by |packet_number| and calls |
- // RemoveRetransmittability. |
- void RemoveRetransmittability(QuicPacketNumber packet_number); |
- |
- // Increases the largest observed. Any packets less or equal to |
- // |largest_acked_packet| are discarded if they are only for the RTT purposes. |
- void IncreaseLargestObserved(QuicPacketNumber largest_observed); |
- |
- // Remove any packets no longer needed for retransmission, congestion, or |
- // RTT measurement purposes. |
- void RemoveObsoletePackets(); |
- |
- private: |
- // Called when a packet is retransmitted with a new packet number. |
- // |old_packet_number| will remain unacked, but will have no |
- // retransmittable data associated with it. Retransmittable frames will be |
- // transferred to |info| and all_transmissions will be populated. |
- void TransferRetransmissionInfo(QuicPacketNumber old_packet_number, |
- QuicPacketNumber new_packet_number, |
- TransmissionType transmission_type, |
- TransmissionInfo* info); |
- |
- void MaybeRemoveRetransmittableFrames(TransmissionInfo* transmission_info); |
- |
- // Returns true if packet may be useful for an RTT measurement. |
- bool IsPacketUsefulForMeasuringRtt(QuicPacketNumber packet_number, |
- const TransmissionInfo& info) const; |
- |
- // Returns true if packet may be useful for congestion control purposes. |
- bool IsPacketUsefulForCongestionControl(const TransmissionInfo& info) const; |
- |
- // Returns true if packet may be associated with retransmittable data |
- // directly or through retransmissions. |
- bool IsPacketUsefulForRetransmittableData(const TransmissionInfo& info) const; |
- |
- // Returns true if the packet no longer has a purpose in the map. |
- bool IsPacketUseless(QuicPacketNumber packet_number, |
- const TransmissionInfo& info) const; |
- |
- QuicPacketNumber largest_sent_packet_; |
- QuicPacketNumber largest_observed_; |
- |
- // Newly serialized retransmittable packets are added to this map, which |
- // contains owning pointers to any contained frames. If a packet is |
- // retransmitted, this map will contain entries for both the old and the new |
- // packet. The old packet's retransmittable frames entry will be nullptr, |
- // while the new packet's entry will contain the frames to retransmit. |
- // If the old packet is acked before the new packet, then the old entry will |
- // be removed from the map and the new entry's retransmittable frames will be |
- // set to nullptr. |
- UnackedPacketMap unacked_packets_; |
- // The packet at the 0th index of unacked_packets_. |
- QuicPacketNumber least_unacked_; |
- |
- QuicByteCount bytes_in_flight_; |
- // Number of retransmittable crypto handshake packets. |
- size_t pending_crypto_packet_count_; |
- |
- DISALLOW_COPY_AND_ASSIGN(QuicUnackedPacketMap); |
-}; |
- |
-} // namespace net |
- |
-#endif // NET_QUIC_QUIC_UNACKED_PACKET_MAP_H_ |