1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef QUICHE_QUIC_TEST_TOOLS_QUIC_SENT_PACKET_MANAGER_PEER_H_ 6 #define QUICHE_QUIC_TEST_TOOLS_QUIC_SENT_PACKET_MANAGER_PEER_H_ 7 8 #include "quiche/quic/core/quic_packets.h" 9 #include "quiche/quic/core/quic_sent_packet_manager.h" 10 11 namespace quic { 12 13 class SendAlgorithmInterface; 14 15 namespace test { 16 17 class QuicSentPacketManagerPeer { 18 public: 19 QuicSentPacketManagerPeer() = delete; 20 21 22 static void SetPerspective(QuicSentPacketManager* sent_packet_manager, 23 Perspective perspective); 24 25 static SendAlgorithmInterface* GetSendAlgorithm( 26 const QuicSentPacketManager& sent_packet_manager); 27 28 static void SetSendAlgorithm(QuicSentPacketManager* sent_packet_manager, 29 SendAlgorithmInterface* send_algorithm); 30 31 static const LossDetectionInterface* GetLossAlgorithm( 32 QuicSentPacketManager* sent_packet_manager); 33 34 static void SetLossAlgorithm(QuicSentPacketManager* sent_packet_manager, 35 LossDetectionInterface* loss_detector); 36 37 static RttStats* GetRttStats(QuicSentPacketManager* sent_packet_manager); 38 39 // Returns true if |packet_number| is a retransmission of a packet. 40 static bool IsRetransmission(QuicSentPacketManager* sent_packet_manager, 41 uint64_t packet_number); 42 43 static void MarkForRetransmission(QuicSentPacketManager* sent_packet_manager, 44 uint64_t packet_number, 45 TransmissionType transmission_type); 46 47 static size_t GetNumRetransmittablePackets( 48 const QuicSentPacketManager* sent_packet_manager); 49 50 static void SetConsecutivePtoCount(QuicSentPacketManager* sent_packet_manager, 51 size_t count); 52 53 static QuicSustainedBandwidthRecorder& GetBandwidthRecorder( 54 QuicSentPacketManager* sent_packet_manager); 55 56 static void SetUsingPacing(QuicSentPacketManager* sent_packet_manager, 57 bool using_pacing); 58 59 static bool UsingPacing(const QuicSentPacketManager* sent_packet_manager); 60 61 static bool HasRetransmittableFrames( 62 QuicSentPacketManager* sent_packet_manager, uint64_t packet_number); 63 64 static QuicUnackedPacketMap* GetUnackedPacketMap( 65 QuicSentPacketManager* sent_packet_manager); 66 67 static void DisablePacerBursts(QuicSentPacketManager* sent_packet_manager); 68 69 static int GetPacerInitialBurstSize( 70 QuicSentPacketManager* sent_packet_manager); 71 72 static void SetNextPacedPacketTime(QuicSentPacketManager* sent_packet_manager, 73 QuicTime time); 74 75 static int GetReorderingShift(QuicSentPacketManager* sent_packet_manager); 76 77 static bool AdaptiveReorderingThresholdEnabled( 78 QuicSentPacketManager* sent_packet_manager); 79 80 static bool AdaptiveTimeThresholdEnabled( 81 QuicSentPacketManager* sent_packet_manager); 82 83 static bool UsePacketThresholdForRuntPackets( 84 QuicSentPacketManager* sent_packet_manager); 85 86 static int GetNumPtosForPathDegrading( 87 QuicSentPacketManager* sent_packet_manager); 88 89 static QuicEcnCounts* GetPeerEcnCounts( 90 QuicSentPacketManager* sent_packet_manager, PacketNumberSpace space); 91 }; 92 93 } // namespace test 94 95 } // namespace quic 96 97 #endif // QUICHE_QUIC_TEST_TOOLS_QUIC_SENT_PACKET_MANAGER_PEER_H_ 98