blob: fdfa0df545033a862b4e4d5fa3d54918ab2860e9 [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#ifndef QUICHE_QUIC_TEST_TOOLS_QUIC_FRAMER_PEER_H_
6#define QUICHE_QUIC_TEST_TOOLS_QUIC_FRAMER_PEER_H_
7
QUICHE teama6ef0a62019-03-07 20:34:33 -05008#include "net/third_party/quiche/src/quic/core/crypto/quic_encrypter.h"
9#include "net/third_party/quiche/src/quic/core/quic_framer.h"
10#include "net/third_party/quiche/src/quic/core/quic_packets.h"
11
12namespace quic {
13
14namespace test {
15
16class QuicFramerPeer {
17 public:
18 QuicFramerPeer() = delete;
19
20 static uint64_t CalculatePacketNumberFromWire(
21 QuicFramer* framer,
22 QuicPacketNumberLength packet_number_length,
23 QuicPacketNumber last_packet_number,
24 uint64_t packet_number);
dschinazi7b9278c2019-05-20 07:36:21 -070025 static void SetLastSerializedServerConnectionId(
26 QuicFramer* framer,
27 QuicConnectionId server_connection_id);
dschinazi346b7ce2019-06-05 01:38:18 -070028 static void SetLastSerializedClientConnectionId(
29 QuicFramer* framer,
30 QuicConnectionId client_connection_id);
nharperc6b99512019-09-19 11:13:48 -070031 static void SetLastWrittenPacketNumberLength(QuicFramer* framer,
32 size_t packet_number_length);
QUICHE teama6ef0a62019-03-07 20:34:33 -050033 static void SetLargestPacketNumber(QuicFramer* framer,
34 QuicPacketNumber packet_number);
35 static void SetPerspective(QuicFramer* framer, Perspective perspective);
36
37 // SwapCrypters exchanges the state of the crypters of |framer1| with
38 // |framer2|.
39 static void SwapCrypters(QuicFramer* framer1, QuicFramer* framer2);
40
41 static QuicEncrypter* GetEncrypter(QuicFramer* framer, EncryptionLevel level);
QUICHE teamfbfd3622019-03-26 10:59:32 -070042 static QuicDecrypter* GetDecrypter(QuicFramer* framer, EncryptionLevel level);
QUICHE teama6ef0a62019-03-07 20:34:33 -050043
QUICHE teama6ef0a62019-03-07 20:34:33 -050044 static void SetFirstSendingPacketNumber(QuicFramer* framer,
45 uint64_t packet_number);
dschinazi8ff74822019-05-28 16:37:20 -070046 static void SetExpectedServerConnectionIDLength(
QUICHE teama6ef0a62019-03-07 20:34:33 -050047 QuicFramer* framer,
dschinazi8ff74822019-05-28 16:37:20 -070048 uint8_t expected_server_connection_id_length);
QUICHE team10b22a12019-03-21 15:31:42 -070049 static QuicPacketNumber GetLargestDecryptedPacketNumber(
50 QuicFramer* framer,
51 PacketNumberSpace packet_number_space);
dschinazi334f0232019-05-29 16:08:53 -070052
53 static bool ProcessAndValidateIetfConnectionIdLength(
54 QuicDataReader* reader,
55 ParsedQuicVersion version,
56 Perspective perspective,
57 bool should_update_expected_server_connection_id_length,
58 uint8_t* expected_server_connection_id_length,
59 uint8_t* destination_connection_id_length,
60 uint8_t* source_connection_id_length,
61 std::string* detailed_error);
fkastenholza3660102019-08-28 05:19:24 -070062
63 static void set_current_received_frame_type(
64 QuicFramer* framer,
65 uint64_t current_received_frame_type) {
66 framer->current_received_frame_type_ = current_received_frame_type;
67 }
wub256b2d62019-11-25 08:46:55 -080068
69 static bool infer_packet_header_type_from_version(QuicFramer* framer) {
70 return framer->infer_packet_header_type_from_version_;
71 }
QUICHE teama6ef0a62019-03-07 20:34:33 -050072};
73
74} // namespace test
75
76} // namespace quic
77
78#endif // QUICHE_QUIC_TEST_TOOLS_QUIC_FRAMER_PEER_H_