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 SetLastWrittenPacketNumberLength(QuicFramer* framer, 26 size_t packet_number_length); 27 static void SetLargestPacketNumber(QuicFramer* framer, 28 QuicPacketNumber packet_number); 29 static void SetPerspective(QuicFramer* framer, Perspective perspective); 30 31 // SwapCrypters exchanges the state of the crypters of |framer1| with 32 // |framer2|. 33 static void SwapCrypters(QuicFramer* framer1, QuicFramer* framer2); 34 35 static QuicEncrypter* GetEncrypter(QuicFramer* framer, EncryptionLevel level); 36 static QuicDecrypter* GetDecrypter(QuicFramer* framer, EncryptionLevel level); 37 38 static void SetFirstSendingPacketNumber(QuicFramer* framer, 39 uint64_t packet_number); 40 static void SetExpectedServerConnectionIDLength( 41 QuicFramer* framer, uint8_t expected_server_connection_id_length); 42 static QuicPacketNumber GetLargestDecryptedPacketNumber( 43 QuicFramer* framer, PacketNumberSpace packet_number_space); 44 45 static bool ProcessAndValidateIetfConnectionIdLength( 46 QuicDataReader* reader, ParsedQuicVersion version, 47 Perspective perspective, 48 bool should_update_expected_server_connection_id_length, 49 uint8_t* expected_server_connection_id_length, 50 uint8_t* destination_connection_id_length, 51 uint8_t* source_connection_id_length, std::string* detailed_error); 52 set_current_received_frame_type(QuicFramer * framer,uint64_t current_received_frame_type)53 static void set_current_received_frame_type( 54 QuicFramer* framer, uint64_t current_received_frame_type) { 55 framer->current_received_frame_type_ = current_received_frame_type; 56 } 57 }; 58 59 } // namespace test 60 61 } // namespace quic 62 63 #endif // QUICHE_QUIC_TEST_TOOLS_QUIC_FRAMER_PEER_H_ 64