• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #ifndef QUICHE_QUIC_TEST_TOOLS_QUIC_FRAMER_PEER_H_
6 #define QUICHE_QUIC_TEST_TOOLS_QUIC_FRAMER_PEER_H_
7 
8 #include "quiche/quic/core/crypto/quic_encrypter.h"
9 #include "quiche/quic/core/quic_framer.h"
10 #include "quiche/quic/core/quic_packets.h"
11 
12 namespace quic {
13 
14 namespace test {
15 
16 class QuicFramerPeer {
17  public:
18   QuicFramerPeer() = delete;
19 
20   static uint64_t CalculatePacketNumberFromWire(
21       QuicFramer* framer, QuicPacketNumberLength packet_number_length,
22       QuicPacketNumber last_packet_number, uint64_t packet_number);
23   static void SetLastSerializedServerConnectionId(
24       QuicFramer* framer, QuicConnectionId server_connection_id);
25   static void SetLastSerializedClientConnectionId(
26       QuicFramer* framer, QuicConnectionId client_connection_id);
27   static void SetLastWrittenPacketNumberLength(QuicFramer* framer,
28                                                size_t packet_number_length);
29   static void SetLargestPacketNumber(QuicFramer* framer,
30                                      QuicPacketNumber packet_number);
31   static void SetPerspective(QuicFramer* framer, Perspective perspective);
32 
33   // SwapCrypters exchanges the state of the crypters of |framer1| with
34   // |framer2|.
35   static void SwapCrypters(QuicFramer* framer1, QuicFramer* framer2);
36 
37   static QuicEncrypter* GetEncrypter(QuicFramer* framer, EncryptionLevel level);
38   static QuicDecrypter* GetDecrypter(QuicFramer* framer, EncryptionLevel level);
39 
40   static void SetFirstSendingPacketNumber(QuicFramer* framer,
41                                           uint64_t packet_number);
42   static void SetExpectedServerConnectionIDLength(
43       QuicFramer* framer, uint8_t expected_server_connection_id_length);
44   static QuicPacketNumber GetLargestDecryptedPacketNumber(
45       QuicFramer* framer, PacketNumberSpace packet_number_space);
46 
47   static bool ProcessAndValidateIetfConnectionIdLength(
48       QuicDataReader* reader, ParsedQuicVersion version,
49       Perspective perspective,
50       bool should_update_expected_server_connection_id_length,
51       uint8_t* expected_server_connection_id_length,
52       uint8_t* destination_connection_id_length,
53       uint8_t* source_connection_id_length, std::string* detailed_error);
54 
set_current_received_frame_type(QuicFramer * framer,uint64_t current_received_frame_type)55   static void set_current_received_frame_type(
56       QuicFramer* framer, uint64_t current_received_frame_type) {
57     framer->current_received_frame_type_ = current_received_frame_type;
58   }
59 
infer_packet_header_type_from_version(QuicFramer * framer)60   static bool infer_packet_header_type_from_version(QuicFramer* framer) {
61     return framer->infer_packet_header_type_from_version_;
62   }
63 };
64 
65 }  // namespace test
66 
67 }  // namespace quic
68 
69 #endif  // QUICHE_QUIC_TEST_TOOLS_QUIC_FRAMER_PEER_H_
70