blob: cd8297a961e8e418a8e5ce7861ef62a237eb5efb [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
5#include "net/third_party/quiche/src/quic/test_tools/quic_sent_packet_manager_peer.h"
6
7#include "net/third_party/quiche/src/quic/core/congestion_control/loss_detection_interface.h"
8#include "net/third_party/quiche/src/quic/core/congestion_control/send_algorithm_interface.h"
9#include "net/third_party/quiche/src/quic/core/quic_packets.h"
10#include "net/third_party/quiche/src/quic/core/quic_sent_packet_manager.h"
11#include "net/third_party/quiche/src/quic/test_tools/quic_unacked_packet_map_peer.h"
12
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(
105 const QuicSentPacketManager* sent_packet_manager,
106 size_t consecutive_rto_count) {
107 return sent_packet_manager->GetRetransmissionDelay(consecutive_rto_count);
108}
109
110// static
111QuicTime::Delta QuicSentPacketManagerPeer::GetRetransmissionDelay(
112 const QuicSentPacketManager* sent_packet_manager) {
113 return sent_packet_manager->GetRetransmissionDelay();
114}
115
116// static
117QuicTime::Delta QuicSentPacketManagerPeer::GetTailLossProbeDelay(
118 const QuicSentPacketManager* sent_packet_manager,
119 size_t consecutive_tlp_count) {
120 return sent_packet_manager->GetTailLossProbeDelay(consecutive_tlp_count);
121}
122
123// static
124QuicTime::Delta QuicSentPacketManagerPeer::GetTailLossProbeDelay(
125 const QuicSentPacketManager* sent_packet_manager) {
126 return sent_packet_manager->GetTailLossProbeDelay();
127}
128
129// static
QUICHE teama6ef0a62019-03-07 20:34:33 -0500130size_t QuicSentPacketManagerPeer::GetNumRetransmittablePackets(
131 const QuicSentPacketManager* sent_packet_manager) {
132 size_t num_unacked_packets = 0;
133 for (auto it = sent_packet_manager->unacked_packets_.begin();
134 it != sent_packet_manager->unacked_packets_.end(); ++it) {
135 if (sent_packet_manager->unacked_packets_.HasRetransmittableFrames(*it)) {
136 ++num_unacked_packets;
137 }
138 }
139 return num_unacked_packets;
140}
141
142// static
QUICHE teama6ef0a62019-03-07 20:34:33 -0500143void QuicSentPacketManagerPeer::SetConsecutiveRtoCount(
144 QuicSentPacketManager* sent_packet_manager,
145 size_t count) {
146 sent_packet_manager->consecutive_rto_count_ = count;
147}
148
149// static
150void QuicSentPacketManagerPeer::SetConsecutiveTlpCount(
151 QuicSentPacketManager* sent_packet_manager,
152 size_t count) {
153 sent_packet_manager->consecutive_tlp_count_ = count;
154}
155
156// static
157QuicSustainedBandwidthRecorder& QuicSentPacketManagerPeer::GetBandwidthRecorder(
158 QuicSentPacketManager* sent_packet_manager) {
159 return sent_packet_manager->sustained_bandwidth_recorder_;
160}
161
162// static
163bool QuicSentPacketManagerPeer::UsingPacing(
164 const QuicSentPacketManager* sent_packet_manager) {
165 return sent_packet_manager->using_pacing_;
166}
167
168// static
169void QuicSentPacketManagerPeer::SetUsingPacing(
170 QuicSentPacketManager* sent_packet_manager,
171 bool using_pacing) {
172 sent_packet_manager->using_pacing_ = using_pacing;
173}
174
175// static
QUICHE teama6ef0a62019-03-07 20:34:33 -0500176bool QuicSentPacketManagerPeer::HasRetransmittableFrames(
177 QuicSentPacketManager* sent_packet_manager,
178 uint64_t packet_number) {
179 return sent_packet_manager->unacked_packets_.HasRetransmittableFrames(
180 QuicPacketNumber(packet_number));
181}
182
183// static
184QuicUnackedPacketMap* QuicSentPacketManagerPeer::GetUnackedPacketMap(
185 QuicSentPacketManager* sent_packet_manager) {
186 return &sent_packet_manager->unacked_packets_;
187}
188
189// static
190void QuicSentPacketManagerPeer::DisablePacerBursts(
191 QuicSentPacketManager* sent_packet_manager) {
192 sent_packet_manager->pacing_sender_.burst_tokens_ = 0;
193 sent_packet_manager->pacing_sender_.initial_burst_size_ = 0;
194}
195
196// static
197void QuicSentPacketManagerPeer::SetNextPacedPacketTime(
198 QuicSentPacketManager* sent_packet_manager,
199 QuicTime time) {
200 sent_packet_manager->pacing_sender_.ideal_next_packet_send_time_ = time;
201}
202
fayangb0c7b4b2019-09-12 06:45:24 -0700203// static
204int QuicSentPacketManagerPeer::GetReorderingShift(
205 QuicSentPacketManager* sent_packet_manager) {
206 return sent_packet_manager->uber_loss_algorithm_.general_loss_algorithms_[0]
207 .reordering_shift();
208}
209
210// static
211bool QuicSentPacketManagerPeer::AdaptiveReorderingThresholdEnabled(
212 QuicSentPacketManager* sent_packet_manager) {
213 return sent_packet_manager->uber_loss_algorithm_.general_loss_algorithms_[0]
214 .use_adaptive_reordering_threshold();
215}
216
fayangdb095652019-11-04 07:37:36 -0800217// static
218bool QuicSentPacketManagerPeer::AdaptiveTimeThresholdEnabled(
219 QuicSentPacketManager* sent_packet_manager) {
220 return sent_packet_manager->uber_loss_algorithm_.general_loss_algorithms_[0]
221 .use_adaptive_time_threshold();
222}
223
QUICHE teama6ef0a62019-03-07 20:34:33 -0500224} // namespace test
225} // namespace quic