blob: f3587833dda1425f52428bf90abbae2e2cfc1189 [file] [log] [blame]
QUICHE teama6ef0a62019-03-07 20:34:33 -05001// 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
QUICHE team5be974e2020-12-29 18:35:24 -05005#include "quic/test_tools/quic_sent_packet_manager_peer.h"
QUICHE teama6ef0a62019-03-07 20:34:33 -05006
QUICHE team5be974e2020-12-29 18:35:24 -05007#include "quic/core/congestion_control/loss_detection_interface.h"
8#include "quic/core/congestion_control/send_algorithm_interface.h"
9#include "quic/core/quic_packets.h"
10#include "quic/core/quic_sent_packet_manager.h"
11#include "quic/test_tools/quic_unacked_packet_map_peer.h"
QUICHE teama6ef0a62019-03-07 20:34:33 -050012
13namespace quic {
14namespace test {
15
16// static
17size_t QuicSentPacketManagerPeer::GetMaxTailLossProbes(
18 QuicSentPacketManager* sent_packet_manager) {
19 return sent_packet_manager->max_tail_loss_probes_;
20}
21
22// static
23void QuicSentPacketManagerPeer::SetMaxTailLossProbes(
24 QuicSentPacketManager* sent_packet_manager,
25 size_t max_tail_loss_probes) {
26 sent_packet_manager->max_tail_loss_probes_ = max_tail_loss_probes;
27}
28
29// static
30bool QuicSentPacketManagerPeer::GetEnableHalfRttTailLossProbe(
31 QuicSentPacketManager* sent_packet_manager) {
32 return sent_packet_manager->enable_half_rtt_tail_loss_probe_;
33}
34
35// static
36bool QuicSentPacketManagerPeer::GetUseNewRto(
37 QuicSentPacketManager* sent_packet_manager) {
38 return sent_packet_manager->use_new_rto_;
39}
40
41// static
42void QuicSentPacketManagerPeer::SetPerspective(
43 QuicSentPacketManager* sent_packet_manager,
44 Perspective perspective) {
45 QuicUnackedPacketMapPeer::SetPerspective(
46 &sent_packet_manager->unacked_packets_, perspective);
47}
48
49// static
50SendAlgorithmInterface* QuicSentPacketManagerPeer::GetSendAlgorithm(
51 const QuicSentPacketManager& sent_packet_manager) {
52 return sent_packet_manager.send_algorithm_.get();
53}
54
55// static
56void QuicSentPacketManagerPeer::SetSendAlgorithm(
57 QuicSentPacketManager* sent_packet_manager,
58 SendAlgorithmInterface* send_algorithm) {
59 sent_packet_manager->SetSendAlgorithm(send_algorithm);
60}
61
62// static
63const LossDetectionInterface* QuicSentPacketManagerPeer::GetLossAlgorithm(
64 QuicSentPacketManager* sent_packet_manager) {
65 return sent_packet_manager->loss_algorithm_;
66}
67
68// static
69void QuicSentPacketManagerPeer::SetLossAlgorithm(
70 QuicSentPacketManager* sent_packet_manager,
71 LossDetectionInterface* loss_detector) {
72 sent_packet_manager->loss_algorithm_ = loss_detector;
73}
74
75// static
76RttStats* QuicSentPacketManagerPeer::GetRttStats(
77 QuicSentPacketManager* sent_packet_manager) {
78 return &sent_packet_manager->rtt_stats_;
79}
80
81// static
QUICHE teama6ef0a62019-03-07 20:34:33 -050082bool QuicSentPacketManagerPeer::IsRetransmission(
83 QuicSentPacketManager* sent_packet_manager,
84 uint64_t packet_number) {
85 DCHECK(HasRetransmittableFrames(sent_packet_manager, packet_number));
86 if (!HasRetransmittableFrames(sent_packet_manager, packet_number)) {
87 return false;
88 }
fayangcff885a2019-10-22 07:39:04 -070089 return sent_packet_manager->unacked_packets_
90 .GetTransmissionInfo(QuicPacketNumber(packet_number))
91 .transmission_type != NOT_RETRANSMISSION;
QUICHE teama6ef0a62019-03-07 20:34:33 -050092}
93
94// static
95void QuicSentPacketManagerPeer::MarkForRetransmission(
96 QuicSentPacketManager* sent_packet_manager,
97 uint64_t packet_number,
98 TransmissionType transmission_type) {
99 sent_packet_manager->MarkForRetransmission(QuicPacketNumber(packet_number),
100 transmission_type);
101}
102
103// static
104QuicTime::Delta QuicSentPacketManagerPeer::GetRetransmissionDelay(
QUICHE teama6ef0a62019-03-07 20:34:33 -0500105 const QuicSentPacketManager* sent_packet_manager) {
106 return sent_packet_manager->GetRetransmissionDelay();
107}
108
109// static
110QuicTime::Delta QuicSentPacketManagerPeer::GetTailLossProbeDelay(
QUICHE teama6ef0a62019-03-07 20:34:33 -0500111 const QuicSentPacketManager* sent_packet_manager) {
112 return sent_packet_manager->GetTailLossProbeDelay();
113}
114
115// static
QUICHE teama6ef0a62019-03-07 20:34:33 -0500116size_t QuicSentPacketManagerPeer::GetNumRetransmittablePackets(
117 const QuicSentPacketManager* sent_packet_manager) {
118 size_t num_unacked_packets = 0;
119 for (auto it = sent_packet_manager->unacked_packets_.begin();
120 it != sent_packet_manager->unacked_packets_.end(); ++it) {
121 if (sent_packet_manager->unacked_packets_.HasRetransmittableFrames(*it)) {
122 ++num_unacked_packets;
123 }
124 }
125 return num_unacked_packets;
126}
127
128// static
QUICHE teama6ef0a62019-03-07 20:34:33 -0500129void QuicSentPacketManagerPeer::SetConsecutiveRtoCount(
130 QuicSentPacketManager* sent_packet_manager,
131 size_t count) {
132 sent_packet_manager->consecutive_rto_count_ = count;
133}
134
135// static
136void QuicSentPacketManagerPeer::SetConsecutiveTlpCount(
137 QuicSentPacketManager* sent_packet_manager,
138 size_t count) {
139 sent_packet_manager->consecutive_tlp_count_ = count;
140}
141
142// static
143QuicSustainedBandwidthRecorder& QuicSentPacketManagerPeer::GetBandwidthRecorder(
144 QuicSentPacketManager* sent_packet_manager) {
145 return sent_packet_manager->sustained_bandwidth_recorder_;
146}
147
148// static
149bool QuicSentPacketManagerPeer::UsingPacing(
150 const QuicSentPacketManager* sent_packet_manager) {
151 return sent_packet_manager->using_pacing_;
152}
153
154// static
155void QuicSentPacketManagerPeer::SetUsingPacing(
156 QuicSentPacketManager* sent_packet_manager,
157 bool using_pacing) {
158 sent_packet_manager->using_pacing_ = using_pacing;
159}
160
161// static
QUICHE teama6ef0a62019-03-07 20:34:33 -0500162bool QuicSentPacketManagerPeer::HasRetransmittableFrames(
163 QuicSentPacketManager* sent_packet_manager,
164 uint64_t packet_number) {
165 return sent_packet_manager->unacked_packets_.HasRetransmittableFrames(
166 QuicPacketNumber(packet_number));
167}
168
169// static
170QuicUnackedPacketMap* QuicSentPacketManagerPeer::GetUnackedPacketMap(
171 QuicSentPacketManager* sent_packet_manager) {
172 return &sent_packet_manager->unacked_packets_;
173}
174
175// static
176void QuicSentPacketManagerPeer::DisablePacerBursts(
177 QuicSentPacketManager* sent_packet_manager) {
178 sent_packet_manager->pacing_sender_.burst_tokens_ = 0;
179 sent_packet_manager->pacing_sender_.initial_burst_size_ = 0;
180}
181
182// static
183void QuicSentPacketManagerPeer::SetNextPacedPacketTime(
184 QuicSentPacketManager* sent_packet_manager,
185 QuicTime time) {
186 sent_packet_manager->pacing_sender_.ideal_next_packet_send_time_ = time;
187}
188
fayangb0c7b4b2019-09-12 06:45:24 -0700189// static
190int QuicSentPacketManagerPeer::GetReorderingShift(
191 QuicSentPacketManager* sent_packet_manager) {
192 return sent_packet_manager->uber_loss_algorithm_.general_loss_algorithms_[0]
193 .reordering_shift();
194}
195
196// static
197bool QuicSentPacketManagerPeer::AdaptiveReorderingThresholdEnabled(
198 QuicSentPacketManager* sent_packet_manager) {
199 return sent_packet_manager->uber_loss_algorithm_.general_loss_algorithms_[0]
200 .use_adaptive_reordering_threshold();
201}
202
fayangdb095652019-11-04 07:37:36 -0800203// static
204bool QuicSentPacketManagerPeer::AdaptiveTimeThresholdEnabled(
205 QuicSentPacketManager* sent_packet_manager) {
206 return sent_packet_manager->uber_loss_algorithm_.general_loss_algorithms_[0]
207 .use_adaptive_time_threshold();
208}
209
fayang84427fc2020-03-09 12:43:26 -0700210// static
211bool QuicSentPacketManagerPeer::UsePacketThresholdForRuntPackets(
212 QuicSentPacketManager* sent_packet_manager) {
213 return sent_packet_manager->uber_loss_algorithm_.general_loss_algorithms_[0]
214 .use_packet_threshold_for_runt_packets();
215}
216
QUICHE teama6ef0a62019-03-07 20:34:33 -0500217} // namespace test
218} // namespace quic