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

Unified Diff: net/quic/quic_unacked_packet_map.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_types.cc ('k') | net/quic/quic_unacked_packet_map.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_
« no previous file with comments | « net/quic/quic_types.cc ('k') | net/quic/quic_unacked_packet_map.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698