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

Unified Diff: net/quic/quic_multipath_sent_packet_manager.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
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_
« no previous file with comments | « net/quic/quic_multipath_received_packet_manager_test.cc ('k') | net/quic/quic_multipath_sent_packet_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698