xref: /aosp_15_r20/external/cronet/net/third_party/quiche/src/quiche/quic/test_tools/quic_packet_creator_peer.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // 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 "quiche/quic/test_tools/quic_packet_creator_peer.h"
6 
7 #include "quiche/quic/core/frames/quic_frame.h"
8 #include "quiche/quic/core/quic_packet_creator.h"
9 #include "quiche/quic/core/quic_types.h"
10 
11 namespace quic {
12 namespace test {
13 
14 // static
SendVersionInPacket(QuicPacketCreator * creator)15 bool QuicPacketCreatorPeer::SendVersionInPacket(QuicPacketCreator* creator) {
16   return creator->IncludeVersionInHeader();
17 }
18 
19 // static
SetSendVersionInPacket(QuicPacketCreator * creator,bool send_version_in_packet)20 void QuicPacketCreatorPeer::SetSendVersionInPacket(
21     QuicPacketCreator* creator, bool send_version_in_packet) {
22   if (!send_version_in_packet) {
23     creator->packet_.encryption_level = ENCRYPTION_FORWARD_SECURE;
24     return;
25   }
26   QUICHE_DCHECK(creator->packet_.encryption_level < ENCRYPTION_FORWARD_SECURE);
27 }
28 
29 // static
SetPacketNumberLength(QuicPacketCreator * creator,QuicPacketNumberLength packet_number_length)30 void QuicPacketCreatorPeer::SetPacketNumberLength(
31     QuicPacketCreator* creator, QuicPacketNumberLength packet_number_length) {
32   creator->packet_.packet_number_length = packet_number_length;
33 }
34 
35 // static
GetPacketNumberLength(QuicPacketCreator * creator)36 QuicPacketNumberLength QuicPacketCreatorPeer::GetPacketNumberLength(
37     QuicPacketCreator* creator) {
38   return creator->GetPacketNumberLength();
39 }
40 
41 // static
42 quiche::QuicheVariableLengthIntegerLength
GetRetryTokenLengthLength(QuicPacketCreator * creator)43 QuicPacketCreatorPeer::GetRetryTokenLengthLength(QuicPacketCreator* creator) {
44   return creator->GetRetryTokenLengthLength();
45 }
46 
47 // static
48 quiche::QuicheVariableLengthIntegerLength
GetLengthLength(QuicPacketCreator * creator)49 QuicPacketCreatorPeer::GetLengthLength(QuicPacketCreator* creator) {
50   return creator->GetLengthLength();
51 }
52 
SetPacketNumber(QuicPacketCreator * creator,uint64_t s)53 void QuicPacketCreatorPeer::SetPacketNumber(QuicPacketCreator* creator,
54                                             uint64_t s) {
55   QUICHE_DCHECK_NE(0u, s);
56   creator->packet_.packet_number = QuicPacketNumber(s);
57 }
58 
SetPacketNumber(QuicPacketCreator * creator,QuicPacketNumber num)59 void QuicPacketCreatorPeer::SetPacketNumber(QuicPacketCreator* creator,
60                                             QuicPacketNumber num) {
61   creator->packet_.packet_number = num;
62 }
63 
64 // static
ClearPacketNumber(QuicPacketCreator * creator)65 void QuicPacketCreatorPeer::ClearPacketNumber(QuicPacketCreator* creator) {
66   creator->packet_.packet_number.Clear();
67 }
68 
69 // static
FillPacketHeader(QuicPacketCreator * creator,QuicPacketHeader * header)70 void QuicPacketCreatorPeer::FillPacketHeader(QuicPacketCreator* creator,
71                                              QuicPacketHeader* header) {
72   creator->FillPacketHeader(header);
73 }
74 
75 // static
CreateStreamFrame(QuicPacketCreator * creator,QuicStreamId id,size_t data_length,QuicStreamOffset offset,bool fin,QuicFrame * frame)76 void QuicPacketCreatorPeer::CreateStreamFrame(QuicPacketCreator* creator,
77                                               QuicStreamId id,
78                                               size_t data_length,
79                                               QuicStreamOffset offset, bool fin,
80                                               QuicFrame* frame) {
81   creator->CreateStreamFrame(id, data_length, offset, fin, frame);
82 }
83 
84 // static
CreateCryptoFrame(QuicPacketCreator * creator,EncryptionLevel level,size_t write_length,QuicStreamOffset offset,QuicFrame * frame)85 bool QuicPacketCreatorPeer::CreateCryptoFrame(QuicPacketCreator* creator,
86                                               EncryptionLevel level,
87                                               size_t write_length,
88                                               QuicStreamOffset offset,
89                                               QuicFrame* frame) {
90   return creator->CreateCryptoFrame(level, write_length, offset, frame);
91 }
92 
93 // static
SerializeAllFrames(QuicPacketCreator * creator,const QuicFrames & frames,char * buffer,size_t buffer_len)94 SerializedPacket QuicPacketCreatorPeer::SerializeAllFrames(
95     QuicPacketCreator* creator, const QuicFrames& frames, char* buffer,
96     size_t buffer_len) {
97   QUICHE_DCHECK(creator->queued_frames_.empty());
98   QUICHE_DCHECK(!frames.empty());
99   for (const QuicFrame& frame : frames) {
100     bool success = creator->AddFrame(frame, NOT_RETRANSMISSION);
101     QUICHE_DCHECK(success);
102   }
103   const bool success =
104       creator->SerializePacket(QuicOwnedPacketBuffer(buffer, nullptr),
105                                buffer_len, /*allow_padding=*/true);
106   QUICHE_DCHECK(success);
107   SerializedPacket packet = std::move(creator->packet_);
108   // The caller takes ownership of the QuicEncryptedPacket.
109   creator->packet_.encrypted_buffer = nullptr;
110   return packet;
111 }
112 
113 // static
114 std::unique_ptr<SerializedPacket>
SerializeConnectivityProbingPacket(QuicPacketCreator * creator)115 QuicPacketCreatorPeer::SerializeConnectivityProbingPacket(
116     QuicPacketCreator* creator) {
117   return creator->SerializeConnectivityProbingPacket();
118 }
119 
120 // static
121 std::unique_ptr<SerializedPacket>
SerializePathChallengeConnectivityProbingPacket(QuicPacketCreator * creator,const QuicPathFrameBuffer & payload)122 QuicPacketCreatorPeer::SerializePathChallengeConnectivityProbingPacket(
123     QuicPacketCreator* creator, const QuicPathFrameBuffer& payload) {
124   return creator->SerializePathChallengeConnectivityProbingPacket(payload);
125 }
126 
127 // static
GetEncryptionLevel(QuicPacketCreator * creator)128 EncryptionLevel QuicPacketCreatorPeer::GetEncryptionLevel(
129     QuicPacketCreator* creator) {
130   return creator->packet_.encryption_level;
131 }
132 
133 // static
framer(QuicPacketCreator * creator)134 QuicFramer* QuicPacketCreatorPeer::framer(QuicPacketCreator* creator) {
135   return creator->framer_;
136 }
137 
138 // static
GetRetryToken(QuicPacketCreator * creator)139 std::string QuicPacketCreatorPeer::GetRetryToken(QuicPacketCreator* creator) {
140   return creator->retry_token_;
141 }
142 
143 // static
QueuedFrames(QuicPacketCreator * creator)144 QuicFrames& QuicPacketCreatorPeer::QueuedFrames(QuicPacketCreator* creator) {
145   return creator->queued_frames_;
146 }
147 
148 // static
SetRandom(QuicPacketCreator * creator,QuicRandom * random)149 void QuicPacketCreatorPeer::SetRandom(QuicPacketCreator* creator,
150                                       QuicRandom* random) {
151   creator->random_ = random;
152 }
153 
154 }  // namespace test
155 }  // namespace quic
156