Index: net/quic/quic_multipath_sent_packet_manager.h |
diff --git a/net/quic/quic_multipath_sent_packet_manager.h b/net/quic/quic_multipath_sent_packet_manager.h |
deleted file mode 100644 |
index eb2a24c278f5eed95b70fd4615867ead05645803..0000000000000000000000000000000000000000 |
--- a/net/quic/quic_multipath_sent_packet_manager.h |
+++ /dev/null |
@@ -1,218 +0,0 @@ |
-// Copyright (c) 2012 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_MULTIPATH_SENT_PACKET_MANAGER_H_ |
-#define NET_QUIC_QUIC_MULTIPATH_SENT_PACKET_MANAGER_H_ |
- |
-#include <vector> |
- |
-#include "net/base/net_export.h" |
-#include "net/quic/quic_protocol.h" |
-#include "net/quic/quic_sent_packet_manager.h" |
-#include "net/quic/quic_sent_packet_manager_interface.h" |
- |
-namespace net { |
- |
-namespace test { |
-class QuicConnectionPeer; |
-class QuicMultipathSentPacketManagerPeer; |
-} // namespace test |
- |
-// A connection level sent packet manager which manages a sent packet manager |
-// per path. The main duties of multipath sent packet manager comprise: |
-// (1) manages a pending retransmission queue shared among all paths; |
-// (2) records mapping of packets transmitted on different paths; |
-// (3) consults paths which should timeout on a retransmission timeout. |
-// TODO(fayang): Currently above duties are not fully implemented, need to |
-// finish them. |
-class NET_EXPORT_PRIVATE QuicMultipathSentPacketManager |
- : public QuicSentPacketManagerInterface { |
- public: |
- // Multipath sent packet manager takes ownership of |manager|. |
- explicit QuicMultipathSentPacketManager( |
- QuicSentPacketManagerInterface* manager, |
- QuicConnectionCloseDelegateInterface* delegate); |
- ~QuicMultipathSentPacketManager() override; |
- |
- // Start implementation of QuicSentPacketManagerInterface. |
- // Sets all paths from |config|. |
- void SetFromConfig(const QuicConfig& config) override; |
- |
- // Resumes connection state on the default path. |
- void ResumeConnectionState( |
- const CachedNetworkParameters& cached_network_params, |
- bool max_bandwidth_resumption) override; |
- |
- // Sets number of active streams of all paths. |
- void SetNumOpenStreams(size_t num_streams) override; |
- |
- // Sets max pacing rate of the default path. |
- void SetMaxPacingRate(QuicBandwidth max_pacing_rate) override; |
- |
- void SetHandshakeConfirmed() override; |
- |
- // Directs |ack_frame| to the appropriate path sent packet manager. |
- void OnIncomingAck(const QuicAckFrame& ack_frame, |
- QuicTime ack_receive_time) override; |
- |
- // Requests retransmission of all unacked packets of |retransmission_type| on |
- // the default path. |
- void RetransmitUnackedPackets(TransmissionType retransmission_type) override; |
- |
- // Tries to retransmit the oldest pending packet across all paths. The |
- // retransmission is sent on the path that has a TLP timer pending. |
- bool MaybeRetransmitTailLossProbe() override; |
- |
- // Removes the retransmittable frames from all unencrypted packets on the |
- // default path to ensure they don't get retransmitted. |
- void NeuterUnencryptedPackets() override; |
- |
- // Returns true if there are pending retransmissions. |
- bool HasPendingRetransmissions() const override; |
- |
- // Retrieves the next pending retransmission. Caller must ensure that |
- // there are pending retransmissions prior to calling this function. |
- PendingRetransmission NextPendingRetransmission() override; |
- |
- // Returns true if the any path has unacked packets. |
- bool HasUnackedPackets() const override; |
- |
- // Returns the smallest packet number of a serialized packet which has not |
- // been acked on |path_id|. |
- QuicPacketNumber GetLeastUnacked(QuicPathId path_id) const override; |
- |
- // Called when a packet has been sent to the peer. If this packet is a |
- // retransmission on a different path than the original packet, records the |
- // mapping in |transmissions_map_|. Retransmittable frames are transfered from |
- // original packet to the sent packet. |
- bool OnPacketSent(SerializedPacket* serialized_packet, |
- QuicPathId original_path_id, |
- QuicPacketNumber original_packet_number, |
- QuicTime sent_time, |
- TransmissionType transmission_type, |
- HasRetransmittableData has_retransmittable_data) override; |
- |
- // Called when the retransmission timer expires. |
- void OnRetransmissionTimeout() override; |
- |
- // Returns the earliest time the next packet can be sent. Sets |path_id| to be |
- // the path on which the next packet should be sent. |
- QuicTime::Delta TimeUntilSend(QuicTime now, |
- HasRetransmittableData retransmittable, |
- QuicPathId* path_id) override; |
- |
- // Returns the earliest retransmission time of all paths. |
- const QuicTime GetRetransmissionTime() const override; |
- |
- // Returns the rtt stats of the default path. |
- const RttStats* GetRttStats() const override; |
- |
- // Returns the estimated bandwidth on default path calculated by the |
- // congestion algorithm. |
- QuicBandwidth BandwidthEstimate() const override; |
- |
- // Returns the sustained bandwidth recorder on the default path. |
- const QuicSustainedBandwidthRecorder* SustainedBandwidthRecorder() |
- const override; |
- |
- // Returns the size of the current congestion window on default path in number |
- // of kDefaultTCPMSS-sized segments. |
- QuicPacketCount GetCongestionWindowInTcpMss() const override; |
- |
- // Determines the number of packets of length |max_packet_length| which fit in |
- // the congestion windows for all paths, and returns the max number of packets |
- // across all paths. |
- QuicPacketCount EstimateMaxPacketsInFlight( |
- QuicByteCount max_packet_length) const override; |
- |
- // Returns the size of the current congestion window size on the default path |
- // in bytes. |
- QuicByteCount GetCongestionWindowInBytes() const override; |
- |
- // Returns the size of the slow start congestion window in number of 1460 byte |
- // TCP segments on the default path. |
- QuicPacketCount GetSlowStartThresholdInTcpMss() const override; |
- |
- // No longer retransmit data for |stream_id| on all paths and any pending |
- // retransmissions in pending_retransmissions_. |
- void CancelRetransmissionsForStream(QuicStreamId stream_id) override; |
- |
- void OnConnectionMigration(QuicPathId path_id, |
- PeerAddressChangeType type) override; |
- |
- bool IsHandshakeConfirmed() const override; |
- |
- // Sets debug delegate for all active paths. |
- void SetDebugDelegate(DebugDelegate* debug_delegate) override; |
- |
- QuicPacketNumber GetLargestObserved(QuicPathId path_id) const override; |
- |
- QuicPacketNumber GetLargestSentPacket(QuicPathId path_id) const override; |
- |
- QuicPacketNumber GetLeastPacketAwaitedByPeer( |
- QuicPathId path_id) const override; |
- |
- // Sets network change visitor for all active paths. |
- void SetNetworkChangeVisitor(NetworkChangeVisitor* visitor) override; |
- |
- // Returns true if the default path is in slow start. |
- bool InSlowStart() const override; |
- |
- // These two methods return the consecutive RTO or TLP count of the default |
- // path. |
- size_t GetConsecutiveRtoCount() const override; |
- size_t GetConsecutiveTlpCount() const override; |
- |
- private: |
- friend class test::QuicConnectionPeer; |
- friend class test::QuicMultipathSentPacketManagerPeer; |
- |
- // State of per path sent packet manager. |
- // TODO(fayang): Need to add a state that path can receive acks but cannot |
- // send data. |
- enum PathSentPacketManagerState { |
- ACTIVE, // We both send packets and receiving acks on this path. |
- CLOSING, // We stop sending packets and receiving acks on this path. There |
- // are retransmittable frames in the unacked packets map. |
- }; |
- |
- // PathSentPacketManagerInfo contains sent packet manager and its state. |
- struct NET_EXPORT_PRIVATE PathSentPacketManagerInfo { |
- PathSentPacketManagerInfo(); |
- PathSentPacketManagerInfo(QuicSentPacketManagerInterface* manager, |
- PathSentPacketManagerState state); |
- PathSentPacketManagerInfo(const PathSentPacketManagerInfo& other); |
- |
- QuicSentPacketManagerInterface* manager; |
- PathSentPacketManagerState state; |
- }; |
- |
- // Returns path sent packet manager if it exists for |path_id|, returns |
- // nullptr otherwise. |
- QuicSentPacketManagerInterface* MaybeGetSentPacketManagerForPath( |
- QuicPathId path_id) const; |
- |
- // Returns path sent packet manager if it exists and |path_id| is ACTIVE, |
- // returns nullptr otherwise. |
- QuicSentPacketManagerInterface* MaybeGetSentPacketManagerForActivePath( |
- QuicPathId path_id) const; |
- |
- // Returns the path which has the earliest retransmission time. |
- QuicPathId DetermineRetransmissionTimeoutPath() const; |
- |
- // Close the connection on unrecoverable path errors. |
- void OnUnrecoverablePathError(QuicPathId path_id); |
- |
- // Current path sent packet managers info, index is path id. |
- std::vector<PathSentPacketManagerInfo> path_managers_info_; |
- |
- // Does not own this delegate. |
- QuicConnectionCloseDelegateInterface* delegate_; |
- |
- DISALLOW_COPY_AND_ASSIGN(QuicMultipathSentPacketManager); |
-}; |
- |
-} // namespace net |
- |
-#endif // NET_QUIC_QUIC_MULTIPATH_SENT_PACKET_MANAGER_H_ |