blob: defdab4076b8aedc76cc225b0eefd2cac72fa18b [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
104bool QuicFramerPeer::AppendApplicationCloseFrame(
105 QuicFramer* framer,
106 const QuicApplicationCloseFrame& frame,
107 QuicDataWriter* writer) {
108 return framer->AppendApplicationCloseFrame(frame, writer);
109}
110
111// static
112bool QuicFramerPeer::ProcessIetfConnectionCloseFrame(
113 QuicFramer* framer,
114 QuicDataReader* reader,
115 QuicConnectionCloseFrame* frame) {
116 return framer->ProcessIetfConnectionCloseFrame(reader, frame);
117}
118
119// static
120bool QuicFramerPeer::ProcessApplicationCloseFrame(
121 QuicFramer* framer,
122 QuicDataReader* reader,
123 QuicApplicationCloseFrame* frame) {
124 return framer->ProcessApplicationCloseFrame(reader, frame);
125}
126
127// static
128bool QuicFramerPeer::ProcessPathChallengeFrame(QuicFramer* framer,
129 QuicDataReader* reader,
130 QuicPathChallengeFrame* frame) {
131 return framer->ProcessPathChallengeFrame(reader, frame);
132}
133
134// static
135bool QuicFramerPeer::ProcessPathResponseFrame(QuicFramer* framer,
136 QuicDataReader* reader,
137 QuicPathResponseFrame* frame) {
138 return framer->ProcessPathResponseFrame(reader, frame);
139}
140
141// static
142bool QuicFramerPeer::AppendPathChallengeFrame(
143 QuicFramer* framer,
144 const QuicPathChallengeFrame& frame,
145 QuicDataWriter* writer) {
146 return framer->AppendPathChallengeFrame(frame, writer);
147}
148
149// static
150bool QuicFramerPeer::AppendPathResponseFrame(QuicFramer* framer,
151 const QuicPathResponseFrame& frame,
152 QuicDataWriter* writer) {
153 return framer->AppendPathResponseFrame(frame, writer);
154}
155
156// static
157bool QuicFramerPeer::AppendIetfResetStreamFrame(QuicFramer* framer,
158 const QuicRstStreamFrame& frame,
159 QuicDataWriter* writer) {
160 return framer->AppendIetfResetStreamFrame(frame, writer);
161}
162
163// static
164bool QuicFramerPeer::ProcessIetfResetStreamFrame(QuicFramer* framer,
165 QuicDataReader* reader,
166 QuicRstStreamFrame* frame) {
167 return framer->ProcessIetfResetStreamFrame(reader, frame);
168}
169
170// static
171bool QuicFramerPeer::ProcessStopSendingFrame(
172 QuicFramer* framer,
173 QuicDataReader* reader,
174 QuicStopSendingFrame* stop_sending_frame) {
175 return framer->ProcessStopSendingFrame(reader, stop_sending_frame);
176}
177
178// static
179bool QuicFramerPeer::AppendStopSendingFrame(
180 QuicFramer* framer,
181 const QuicStopSendingFrame& stop_sending_frame,
182 QuicDataWriter* writer) {
183 return framer->AppendStopSendingFrame(stop_sending_frame, writer);
184}
185
186// static
187bool QuicFramerPeer::AppendMaxDataFrame(QuicFramer* framer,
188 const QuicWindowUpdateFrame& frame,
189 QuicDataWriter* writer) {
190 return framer->AppendMaxDataFrame(frame, writer);
191}
192
193// static
194bool QuicFramerPeer::AppendMaxStreamDataFrame(
195 QuicFramer* framer,
196 const QuicWindowUpdateFrame& frame,
197 QuicDataWriter* writer) {
198 return framer->AppendMaxStreamDataFrame(frame, writer);
199}
200
201// static
202bool QuicFramerPeer::ProcessMaxDataFrame(QuicFramer* framer,
203 QuicDataReader* reader,
204 QuicWindowUpdateFrame* frame) {
205 return framer->ProcessMaxDataFrame(reader, frame);
206}
207
208// static
209bool QuicFramerPeer::ProcessMaxStreamDataFrame(QuicFramer* framer,
210 QuicDataReader* reader,
211 QuicWindowUpdateFrame* frame) {
212 return framer->ProcessMaxStreamDataFrame(reader, frame);
213}
214
215// static
216bool QuicFramerPeer::AppendMaxStreamsFrame(QuicFramer* framer,
217 const QuicMaxStreamIdFrame& frame,
218 QuicDataWriter* writer) {
219 return framer->AppendMaxStreamsFrame(frame, writer);
220}
221
222// static
223bool QuicFramerPeer::ProcessMaxStreamsFrame(QuicFramer* framer,
224 QuicDataReader* reader,
225 QuicMaxStreamIdFrame* frame,
226 uint64_t frame_type) {
227 return framer->ProcessMaxStreamsFrame(reader, frame, frame_type);
228}
229
230// static
231bool QuicFramerPeer::AppendIetfBlockedFrame(QuicFramer* framer,
232 const QuicBlockedFrame& frame,
233 QuicDataWriter* writer) {
234 return framer->AppendIetfBlockedFrame(frame, writer);
235}
236
237// static
238bool QuicFramerPeer::ProcessIetfBlockedFrame(QuicFramer* framer,
239 QuicDataReader* reader,
240 QuicBlockedFrame* frame) {
241 return framer->ProcessIetfBlockedFrame(reader, frame);
242}
243
244// static
245bool QuicFramerPeer::AppendStreamBlockedFrame(QuicFramer* framer,
246 const QuicBlockedFrame& frame,
247 QuicDataWriter* writer) {
248 return framer->AppendStreamBlockedFrame(frame, writer);
249}
250
251// static
252bool QuicFramerPeer::ProcessStreamBlockedFrame(QuicFramer* framer,
253 QuicDataReader* reader,
254 QuicBlockedFrame* frame) {
255 return framer->ProcessStreamBlockedFrame(reader, frame);
256}
257
258// static
259bool QuicFramerPeer::AppendStreamsBlockedFrame(
260 QuicFramer* framer,
261 const QuicStreamIdBlockedFrame& frame,
262 QuicDataWriter* writer) {
263 return framer->AppendStreamsBlockedFrame(frame, writer);
264}
265
266// static
267bool QuicFramerPeer::ProcessStreamsBlockedFrame(QuicFramer* framer,
268 QuicDataReader* reader,
269 QuicStreamIdBlockedFrame* frame,
270 uint64_t frame_type) {
271 return framer->ProcessStreamsBlockedFrame(reader, frame, frame_type);
272}
273
274// static
275bool QuicFramerPeer::AppendNewConnectionIdFrame(
276 QuicFramer* framer,
277 const QuicNewConnectionIdFrame& frame,
278 QuicDataWriter* writer) {
279 return framer->AppendNewConnectionIdFrame(frame, writer);
280}
281
282// static
283bool QuicFramerPeer::ProcessNewConnectionIdFrame(
284 QuicFramer* framer,
285 QuicDataReader* reader,
286 QuicNewConnectionIdFrame* frame) {
287 return framer->ProcessNewConnectionIdFrame(reader, frame);
288}
289
290// static
291bool QuicFramerPeer::AppendRetireConnectionIdFrame(
292 QuicFramer* framer,
293 const QuicRetireConnectionIdFrame& frame,
294 QuicDataWriter* writer) {
295 return framer->AppendRetireConnectionIdFrame(frame, writer);
296}
297
298// static
299bool QuicFramerPeer::ProcessRetireConnectionIdFrame(
300 QuicFramer* framer,
301 QuicDataReader* reader,
302 QuicRetireConnectionIdFrame* frame) {
303 return framer->ProcessRetireConnectionIdFrame(reader, frame);
304}
305
306// static
307void QuicFramerPeer::SwapCrypters(QuicFramer* framer1, QuicFramer* framer2) {
308 for (int i = ENCRYPTION_NONE; i < NUM_ENCRYPTION_LEVELS; i++) {
309 framer1->encrypter_[i].swap(framer2->encrypter_[i]);
310 }
311 framer1->decrypter_.swap(framer2->decrypter_);
312 framer1->alternative_decrypter_.swap(framer2->alternative_decrypter_);
313
314 EncryptionLevel framer2_level = framer2->decrypter_level_;
315 framer2->decrypter_level_ = framer1->decrypter_level_;
316 framer1->decrypter_level_ = framer2_level;
317 framer2_level = framer2->alternative_decrypter_level_;
318 framer2->alternative_decrypter_level_ = framer1->alternative_decrypter_level_;
319 framer1->alternative_decrypter_level_ = framer2_level;
320
321 const bool framer2_latch = framer2->alternative_decrypter_latch_;
322 framer2->alternative_decrypter_latch_ = framer1->alternative_decrypter_latch_;
323 framer1->alternative_decrypter_latch_ = framer2_latch;
324}
325
326// static
327QuicEncrypter* QuicFramerPeer::GetEncrypter(QuicFramer* framer,
328 EncryptionLevel level) {
329 return framer->encrypter_[level].get();
330}
331
332// static
333size_t QuicFramerPeer::ComputeFrameLength(
334 QuicFramer* framer,
335 const QuicFrame& frame,
336 bool last_frame_in_packet,
337 QuicPacketNumberLength packet_number_length) {
338 return framer->ComputeFrameLength(frame, last_frame_in_packet,
339 packet_number_length);
340}
341
342// static
343void QuicFramerPeer::SetFirstSendingPacketNumber(QuicFramer* framer,
344 uint64_t packet_number) {
345 *const_cast<QuicPacketNumber*>(&framer->first_sending_packet_number_) =
346 QuicPacketNumber(packet_number);
347}
348
349// static
350void QuicFramerPeer::SetExpectedConnectionIDLength(
351 QuicFramer* framer,
352 uint8_t expected_connection_id_length) {
353 *const_cast<uint8_t*>(&framer->expected_connection_id_length_) =
354 expected_connection_id_length;
355}
356
357} // namespace test
358} // namespace quic