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/congestion_control/pacing_sender.h" 9 #include "quiche/quic/core/quic_packets.h" 10 #include "quiche/quic/core/quic_sent_packet_manager.h" 11 12 namespace quic { 13 14 class SendAlgorithmInterface; 15 16 namespace test { 17 18 class QuicSentPacketManagerPeer { 19 public: 20 QuicSentPacketManagerPeer() = delete; 21 22 23 static void SetPerspective(QuicSentPacketManager* sent_packet_manager, 24 Perspective perspective); 25 26 static SendAlgorithmInterface* GetSendAlgorithm( 27 const QuicSentPacketManager& sent_packet_manager); 28 29 static void SetSendAlgorithm(QuicSentPacketManager* sent_packet_manager, 30 SendAlgorithmInterface* send_algorithm); 31 32 static const LossDetectionInterface* GetLossAlgorithm( 33 QuicSentPacketManager* sent_packet_manager); 34 35 static void SetLossAlgorithm(QuicSentPacketManager* sent_packet_manager, 36 LossDetectionInterface* loss_detector); 37 38 static RttStats* GetRttStats(QuicSentPacketManager* sent_packet_manager); 39 40 // Returns true if |packet_number| is a retransmission of a packet. 41 static bool IsRetransmission(QuicSentPacketManager* sent_packet_manager, 42 uint64_t packet_number); 43 44 static void MarkForRetransmission(QuicSentPacketManager* sent_packet_manager, 45 uint64_t packet_number, 46 TransmissionType transmission_type); 47 48 static size_t GetNumRetransmittablePackets( 49 const QuicSentPacketManager* sent_packet_manager); 50 51 static void SetConsecutivePtoCount(QuicSentPacketManager* sent_packet_manager, 52 size_t count); 53 54 static QuicSustainedBandwidthRecorder& GetBandwidthRecorder( 55 QuicSentPacketManager* sent_packet_manager); 56 57 static void SetUsingPacing(QuicSentPacketManager* sent_packet_manager, 58 bool using_pacing); 59 60 static bool UsingPacing(const QuicSentPacketManager* sent_packet_manager); 61 62 static PacingSender* GetPacingSender( 63 QuicSentPacketManager* sent_packet_manager); 64 65 static bool HasRetransmittableFrames( 66 QuicSentPacketManager* sent_packet_manager, uint64_t packet_number); 67 68 static QuicUnackedPacketMap* GetUnackedPacketMap( 69 QuicSentPacketManager* sent_packet_manager); 70 71 static void DisablePacerBursts(QuicSentPacketManager* sent_packet_manager); 72 73 static int GetPacerInitialBurstSize( 74 QuicSentPacketManager* sent_packet_manager); 75 76 static void SetNextPacedPacketTime(QuicSentPacketManager* sent_packet_manager, 77 QuicTime time); 78 79 static int GetReorderingShift(QuicSentPacketManager* sent_packet_manager); 80 81 static bool AdaptiveReorderingThresholdEnabled( 82 QuicSentPacketManager* sent_packet_manager); 83 84 static bool AdaptiveTimeThresholdEnabled( 85 QuicSentPacketManager* sent_packet_manager); 86 87 static bool UsePacketThresholdForRuntPackets( 88 QuicSentPacketManager* sent_packet_manager); 89 90 static int GetNumPtosForPathDegrading( 91 QuicSentPacketManager* sent_packet_manager); 92 93 static QuicEcnCounts* GetPeerEcnCounts( 94 QuicSentPacketManager* sent_packet_manager, PacketNumberSpace space); 95 96 static QuicPacketCount GetEct0Sent(QuicSentPacketManager* sent_packet_manager, 97 PacketNumberSpace space); 98 99 static QuicPacketCount GetEct1Sent(QuicSentPacketManager* sent_packet_manager, 100 PacketNumberSpace space); 101 }; 102 103 } // namespace test 104 105 } // namespace quic 106 107 #endif // QUICHE_QUIC_TEST_TOOLS_QUIC_SENT_PACKET_MANAGER_PEER_H_ 108