blob: c5dd747d0dbab6a74f0aa4f77dcefc71321e3022 [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_packet_creator_peer.h"
6
7#include "net/third_party/quiche/src/quic/core/quic_packet_creator.h"
8#include "net/third_party/quiche/src/quic/core/quic_types.h"
9
10namespace quic {
11namespace test {
12
13// static
14bool QuicPacketCreatorPeer::SendVersionInPacket(QuicPacketCreator* creator) {
15 return creator->IncludeVersionInHeader();
16}
17
18// static
19void QuicPacketCreatorPeer::SetSendVersionInPacket(
20 QuicPacketCreator* creator,
21 bool send_version_in_packet) {
22 if (creator->framer_->transport_version() != QUIC_VERSION_99) {
23 creator->send_version_in_packet_ = send_version_in_packet;
24 return;
25 }
26 if (!send_version_in_packet) {
27 creator->packet_.encryption_level = ENCRYPTION_FORWARD_SECURE;
28 return;
29 }
30 DCHECK(creator->packet_.encryption_level < ENCRYPTION_FORWARD_SECURE);
31}
32
33// static
34void QuicPacketCreatorPeer::SetPacketNumberLength(
35 QuicPacketCreator* creator,
36 QuicPacketNumberLength packet_number_length) {
37 creator->packet_.packet_number_length = packet_number_length;
38}
39
40// static
41QuicPacketNumberLength QuicPacketCreatorPeer::GetPacketNumberLength(
42 QuicPacketCreator* creator) {
43 return creator->GetPacketNumberLength();
44}
45
46// static
47QuicVariableLengthIntegerLength
48QuicPacketCreatorPeer::GetRetryTokenLengthLength(QuicPacketCreator* creator) {
49 return creator->GetRetryTokenLengthLength();
50}
51
52// static
53QuicVariableLengthIntegerLength QuicPacketCreatorPeer::GetLengthLength(
54 QuicPacketCreator* creator) {
55 return creator->GetLengthLength();
56}
57
58void QuicPacketCreatorPeer::SetPacketNumber(QuicPacketCreator* creator,
59 uint64_t s) {
60 DCHECK_NE(0u, s);
61 creator->packet_.packet_number = QuicPacketNumber(s);
62}
63
64// static
65void QuicPacketCreatorPeer::ClearPacketNumber(QuicPacketCreator* creator) {
66 creator->packet_.packet_number.Clear();
67}
68
69// static
70void QuicPacketCreatorPeer::FillPacketHeader(QuicPacketCreator* creator,
71 QuicPacketHeader* header) {
72 creator->FillPacketHeader(header);
73}
74
75// static
76void QuicPacketCreatorPeer::CreateStreamFrame(QuicPacketCreator* creator,
77 QuicStreamId id,
QUICHE teamf08778a2019-03-14 08:10:26 -070078 size_t data_length,
QUICHE teama6ef0a62019-03-07 20:34:33 -050079 QuicStreamOffset offset,
80 bool fin,
81 QuicFrame* frame) {
QUICHE teamf08778a2019-03-14 08:10:26 -070082 creator->CreateStreamFrame(id, data_length, offset, fin, frame);
QUICHE teama6ef0a62019-03-07 20:34:33 -050083}
84
85// static
QUICHE teamdc41bf12019-03-20 12:58:42 -070086bool QuicPacketCreatorPeer::CreateCryptoFrame(QuicPacketCreator* creator,
87 EncryptionLevel level,
88 size_t write_length,
89 QuicStreamOffset offset,
90 QuicFrame* frame) {
91 return creator->CreateCryptoFrame(level, write_length, offset, frame);
92}
93
94// static
QUICHE teama6ef0a62019-03-07 20:34:33 -050095SerializedPacket QuicPacketCreatorPeer::SerializeAllFrames(
96 QuicPacketCreator* creator,
97 const QuicFrames& frames,
98 char* buffer,
99 size_t buffer_len) {
100 DCHECK(creator->queued_frames_.empty());
101 DCHECK(!frames.empty());
102 for (const QuicFrame& frame : frames) {
103 bool success = creator->AddFrame(frame, false, NOT_RETRANSMISSION);
104 DCHECK(success);
105 }
106 creator->SerializePacket(buffer, buffer_len);
107 SerializedPacket packet = creator->packet_;
108 // The caller takes ownership of the QuicEncryptedPacket.
109 creator->packet_.encrypted_buffer = nullptr;
110 DCHECK(packet.retransmittable_frames.empty());
111 return packet;
112}
113
114// static
115OwningSerializedPacketPointer
116QuicPacketCreatorPeer::SerializeConnectivityProbingPacket(
117 QuicPacketCreator* creator) {
118 return creator->SerializeConnectivityProbingPacket();
119}
120
121// static
122OwningSerializedPacketPointer
123QuicPacketCreatorPeer::SerializePathChallengeConnectivityProbingPacket(
124 QuicPacketCreator* creator,
125 QuicPathFrameBuffer* payload) {
126 return creator->SerializePathChallengeConnectivityProbingPacket(payload);
127}
128
129// static
130EncryptionLevel QuicPacketCreatorPeer::GetEncryptionLevel(
131 QuicPacketCreator* creator) {
132 return creator->packet_.encryption_level;
133}
134
135// static
136QuicFramer* QuicPacketCreatorPeer::framer(QuicPacketCreator* creator) {
137 return creator->framer_;
138}
139
140} // namespace test
141} // namespace quic