blob: 23486ea8587fdb9738140205871e99de80549de7 [file] [log] [blame]
QUICHE teama6ef0a62019-03-07 20:34:33 -05001// Copyright (c) 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_framer_peer.h"
6
7#include "net/third_party/quiche/src/quic/core/quic_framer.h"
8#include "net/third_party/quiche/src/quic/core/quic_packets.h"
9#include "net/third_party/quiche/src/quic/platform/api/quic_map_util.h"
10
11namespace quic {
12namespace test {
13
14// static
15uint64_t QuicFramerPeer::CalculatePacketNumberFromWire(
16 QuicFramer* framer,
17 QuicPacketNumberLength packet_number_length,
18 QuicPacketNumber last_packet_number,
19 uint64_t packet_number) {
20 return framer->CalculatePacketNumberFromWire(
21 packet_number_length, last_packet_number, packet_number);
22}
23
24// static
25void QuicFramerPeer::SetLastSerializedConnectionId(
26 QuicFramer* framer,
27 QuicConnectionId connection_id) {
28 framer->last_serialized_connection_id_ = connection_id;
29}
30
31// static
32void QuicFramerPeer::SetLargestPacketNumber(QuicFramer* framer,
33 QuicPacketNumber packet_number) {
34 framer->largest_packet_number_ = packet_number;
35}
36
37// static
38void QuicFramerPeer::SetPerspective(QuicFramer* framer,
39 Perspective perspective) {
40 framer->perspective_ = perspective;
41 framer->infer_packet_header_type_from_version_ =
42 perspective == Perspective::IS_CLIENT;
43}
44
45// static
46bool QuicFramerPeer::ProcessIetfStreamFrame(QuicFramer* framer,
47 QuicDataReader* reader,
48 uint8_t frame_type,
49 QuicStreamFrame* frame) {
50 return framer->ProcessIetfStreamFrame(reader, frame_type, frame);
51}
52
53// static
54bool QuicFramerPeer::AppendIetfStreamFrame(QuicFramer* framer,
55 const QuicStreamFrame& frame,
56 bool last_frame_in_packet,
57 QuicDataWriter* writer) {
58 return framer->AppendIetfStreamFrame(frame, last_frame_in_packet, writer);
59}
60
61// static
62bool QuicFramerPeer::ProcessCryptoFrame(QuicFramer* framer,
63 QuicDataReader* reader,
64 QuicCryptoFrame* frame) {
65 return framer->ProcessCryptoFrame(reader, frame);
66}
67
68// static
69bool QuicFramerPeer::AppendCryptoFrame(QuicFramer* framer,
70 const QuicCryptoFrame& frame,
71 QuicDataWriter* writer) {
72 return framer->AppendCryptoFrame(frame, writer);
73}
74
75// static
76bool QuicFramerPeer::ProcessIetfAckFrame(QuicFramer* framer,
77 QuicDataReader* reader,
78 uint64_t frame_type,
79 QuicAckFrame* ack_frame) {
80 return framer->ProcessIetfAckFrame(reader, frame_type, ack_frame);
81}
82
83// static
84bool QuicFramerPeer::AppendIetfAckFrameAndTypeByte(QuicFramer* framer,
85 const QuicAckFrame& frame,
86 QuicDataWriter* writer) {
87 return framer->AppendIetfAckFrameAndTypeByte(frame, writer);
88}
89// static
90size_t QuicFramerPeer::GetIetfAckFrameSize(QuicFramer* framer,
91 const QuicAckFrame& frame) {
92 return framer->GetIetfAckFrameSize(frame);
93}
94
95// static
96bool QuicFramerPeer::AppendIetfConnectionCloseFrame(
97 QuicFramer* framer,
98 const QuicConnectionCloseFrame& frame,
99 QuicDataWriter* writer) {
100 return framer->AppendIetfConnectionCloseFrame(frame, writer);
101}
102
103// static
QUICHE teama6ef0a62019-03-07 20:34:33 -0500104bool QuicFramerPeer::ProcessIetfConnectionCloseFrame(
105 QuicFramer* framer,
106 QuicDataReader* reader,
fkastenholze9d71a82019-04-09 05:12:13 -0700107 QuicConnectionCloseType type,
QUICHE teama6ef0a62019-03-07 20:34:33 -0500108 QuicConnectionCloseFrame* frame) {
fkastenholze9d71a82019-04-09 05:12:13 -0700109 return framer->ProcessIetfConnectionCloseFrame(reader, type, frame);
QUICHE teama6ef0a62019-03-07 20:34:33 -0500110}
111
112// static
QUICHE teama6ef0a62019-03-07 20:34:33 -0500113bool QuicFramerPeer::ProcessPathChallengeFrame(QuicFramer* framer,
114 QuicDataReader* reader,
115 QuicPathChallengeFrame* frame) {
116 return framer->ProcessPathChallengeFrame(reader, frame);
117}
118
119// static
120bool QuicFramerPeer::ProcessPathResponseFrame(QuicFramer* framer,
121 QuicDataReader* reader,
122 QuicPathResponseFrame* frame) {
123 return framer->ProcessPathResponseFrame(reader, frame);
124}
125
126// static
127bool QuicFramerPeer::AppendPathChallengeFrame(
128 QuicFramer* framer,
129 const QuicPathChallengeFrame& frame,
130 QuicDataWriter* writer) {
131 return framer->AppendPathChallengeFrame(frame, writer);
132}
133
134// static
135bool QuicFramerPeer::AppendPathResponseFrame(QuicFramer* framer,
136 const QuicPathResponseFrame& frame,
137 QuicDataWriter* writer) {
138 return framer->AppendPathResponseFrame(frame, writer);
139}
140
141// static
142bool QuicFramerPeer::AppendIetfResetStreamFrame(QuicFramer* framer,
143 const QuicRstStreamFrame& frame,
144 QuicDataWriter* writer) {
145 return framer->AppendIetfResetStreamFrame(frame, writer);
146}
147
148// static
149bool QuicFramerPeer::ProcessIetfResetStreamFrame(QuicFramer* framer,
150 QuicDataReader* reader,
151 QuicRstStreamFrame* frame) {
152 return framer->ProcessIetfResetStreamFrame(reader, frame);
153}
154
155// static
156bool QuicFramerPeer::ProcessStopSendingFrame(
157 QuicFramer* framer,
158 QuicDataReader* reader,
159 QuicStopSendingFrame* stop_sending_frame) {
160 return framer->ProcessStopSendingFrame(reader, stop_sending_frame);
161}
162
163// static
164bool QuicFramerPeer::AppendStopSendingFrame(
165 QuicFramer* framer,
166 const QuicStopSendingFrame& stop_sending_frame,
167 QuicDataWriter* writer) {
168 return framer->AppendStopSendingFrame(stop_sending_frame, writer);
169}
170
171// static
172bool QuicFramerPeer::AppendMaxDataFrame(QuicFramer* framer,
173 const QuicWindowUpdateFrame& frame,
174 QuicDataWriter* writer) {
175 return framer->AppendMaxDataFrame(frame, writer);
176}
177
178// static
179bool QuicFramerPeer::AppendMaxStreamDataFrame(
180 QuicFramer* framer,
181 const QuicWindowUpdateFrame& frame,
182 QuicDataWriter* writer) {
183 return framer->AppendMaxStreamDataFrame(frame, writer);
184}
185
186// static
187bool QuicFramerPeer::ProcessMaxDataFrame(QuicFramer* framer,
188 QuicDataReader* reader,
189 QuicWindowUpdateFrame* frame) {
190 return framer->ProcessMaxDataFrame(reader, frame);
191}
192
193// static
194bool QuicFramerPeer::ProcessMaxStreamDataFrame(QuicFramer* framer,
195 QuicDataReader* reader,
196 QuicWindowUpdateFrame* frame) {
197 return framer->ProcessMaxStreamDataFrame(reader, frame);
198}
199
200// static
201bool QuicFramerPeer::AppendMaxStreamsFrame(QuicFramer* framer,
fkastenholz3c4eabf2019-04-22 07:49:59 -0700202 const QuicMaxStreamsFrame& frame,
QUICHE teama6ef0a62019-03-07 20:34:33 -0500203 QuicDataWriter* writer) {
204 return framer->AppendMaxStreamsFrame(frame, writer);
205}
206
207// static
208bool QuicFramerPeer::ProcessMaxStreamsFrame(QuicFramer* framer,
209 QuicDataReader* reader,
fkastenholz3c4eabf2019-04-22 07:49:59 -0700210 QuicMaxStreamsFrame* frame,
QUICHE teama6ef0a62019-03-07 20:34:33 -0500211 uint64_t frame_type) {
212 return framer->ProcessMaxStreamsFrame(reader, frame, frame_type);
213}
214
215// static
216bool QuicFramerPeer::AppendIetfBlockedFrame(QuicFramer* framer,
217 const QuicBlockedFrame& frame,
218 QuicDataWriter* writer) {
219 return framer->AppendIetfBlockedFrame(frame, writer);
220}
221
222// static
223bool QuicFramerPeer::ProcessIetfBlockedFrame(QuicFramer* framer,
224 QuicDataReader* reader,
225 QuicBlockedFrame* frame) {
226 return framer->ProcessIetfBlockedFrame(reader, frame);
227}
228
229// static
230bool QuicFramerPeer::AppendStreamBlockedFrame(QuicFramer* framer,
231 const QuicBlockedFrame& frame,
232 QuicDataWriter* writer) {
233 return framer->AppendStreamBlockedFrame(frame, writer);
234}
235
236// static
237bool QuicFramerPeer::ProcessStreamBlockedFrame(QuicFramer* framer,
238 QuicDataReader* reader,
239 QuicBlockedFrame* frame) {
240 return framer->ProcessStreamBlockedFrame(reader, frame);
241}
242
243// static
244bool QuicFramerPeer::AppendStreamsBlockedFrame(
245 QuicFramer* framer,
fkastenholz3c4eabf2019-04-22 07:49:59 -0700246 const QuicStreamsBlockedFrame& frame,
QUICHE teama6ef0a62019-03-07 20:34:33 -0500247 QuicDataWriter* writer) {
248 return framer->AppendStreamsBlockedFrame(frame, writer);
249}
250
251// static
252bool QuicFramerPeer::ProcessStreamsBlockedFrame(QuicFramer* framer,
253 QuicDataReader* reader,
fkastenholz3c4eabf2019-04-22 07:49:59 -0700254 QuicStreamsBlockedFrame* frame,
QUICHE teama6ef0a62019-03-07 20:34:33 -0500255 uint64_t frame_type) {
256 return framer->ProcessStreamsBlockedFrame(reader, frame, frame_type);
257}
258
259// static
260bool QuicFramerPeer::AppendNewConnectionIdFrame(
261 QuicFramer* framer,
262 const QuicNewConnectionIdFrame& frame,
263 QuicDataWriter* writer) {
264 return framer->AppendNewConnectionIdFrame(frame, writer);
265}
266
267// static
268bool QuicFramerPeer::ProcessNewConnectionIdFrame(
269 QuicFramer* framer,
270 QuicDataReader* reader,
271 QuicNewConnectionIdFrame* frame) {
272 return framer->ProcessNewConnectionIdFrame(reader, frame);
273}
274
275// static
276bool QuicFramerPeer::AppendRetireConnectionIdFrame(
277 QuicFramer* framer,
278 const QuicRetireConnectionIdFrame& frame,
279 QuicDataWriter* writer) {
280 return framer->AppendRetireConnectionIdFrame(frame, writer);
281}
282
283// static
284bool QuicFramerPeer::ProcessRetireConnectionIdFrame(
285 QuicFramer* framer,
286 QuicDataReader* reader,
287 QuicRetireConnectionIdFrame* frame) {
288 return framer->ProcessRetireConnectionIdFrame(reader, frame);
289}
290
291// static
292void QuicFramerPeer::SwapCrypters(QuicFramer* framer1, QuicFramer* framer2) {
QUICHE team6987b4a2019-03-15 16:23:04 -0700293 for (int i = ENCRYPTION_INITIAL; i < NUM_ENCRYPTION_LEVELS; i++) {
QUICHE teama6ef0a62019-03-07 20:34:33 -0500294 framer1->encrypter_[i].swap(framer2->encrypter_[i]);
QUICHE team76086e42019-03-25 15:12:29 -0700295 framer1->decrypter_[i].swap(framer2->decrypter_[i]);
QUICHE teama6ef0a62019-03-07 20:34:33 -0500296 }
QUICHE teama6ef0a62019-03-07 20:34:33 -0500297
298 EncryptionLevel framer2_level = framer2->decrypter_level_;
299 framer2->decrypter_level_ = framer1->decrypter_level_;
300 framer1->decrypter_level_ = framer2_level;
301 framer2_level = framer2->alternative_decrypter_level_;
302 framer2->alternative_decrypter_level_ = framer1->alternative_decrypter_level_;
303 framer1->alternative_decrypter_level_ = framer2_level;
304
305 const bool framer2_latch = framer2->alternative_decrypter_latch_;
306 framer2->alternative_decrypter_latch_ = framer1->alternative_decrypter_latch_;
307 framer1->alternative_decrypter_latch_ = framer2_latch;
308}
309
310// static
311QuicEncrypter* QuicFramerPeer::GetEncrypter(QuicFramer* framer,
312 EncryptionLevel level) {
313 return framer->encrypter_[level].get();
314}
315
316// static
QUICHE teamfbfd3622019-03-26 10:59:32 -0700317QuicDecrypter* QuicFramerPeer::GetDecrypter(QuicFramer* framer,
318 EncryptionLevel level) {
319 return framer->decrypter_[level].get();
320}
321
322// static
QUICHE teama6ef0a62019-03-07 20:34:33 -0500323size_t QuicFramerPeer::ComputeFrameLength(
324 QuicFramer* framer,
325 const QuicFrame& frame,
326 bool last_frame_in_packet,
327 QuicPacketNumberLength packet_number_length) {
328 return framer->ComputeFrameLength(frame, last_frame_in_packet,
329 packet_number_length);
330}
331
332// static
333void QuicFramerPeer::SetFirstSendingPacketNumber(QuicFramer* framer,
334 uint64_t packet_number) {
335 *const_cast<QuicPacketNumber*>(&framer->first_sending_packet_number_) =
336 QuicPacketNumber(packet_number);
337}
338
339// static
340void QuicFramerPeer::SetExpectedConnectionIDLength(
341 QuicFramer* framer,
342 uint8_t expected_connection_id_length) {
343 *const_cast<uint8_t*>(&framer->expected_connection_id_length_) =
344 expected_connection_id_length;
345}
346
QUICHE team10b22a12019-03-21 15:31:42 -0700347// static
348QuicPacketNumber QuicFramerPeer::GetLargestDecryptedPacketNumber(
349 QuicFramer* framer,
350 PacketNumberSpace packet_number_space) {
351 return framer->largest_decrypted_packet_numbers_[packet_number_space];
352}
353
QUICHE teama6ef0a62019-03-07 20:34:33 -0500354} // namespace test
355} // namespace quic