1 // Copyright 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_DISPATCHER_PEER_H_ 6 #define QUICHE_QUIC_TEST_TOOLS_QUIC_DISPATCHER_PEER_H_ 7 8 #include "quiche/quic/core/quic_connection_id.h" 9 #include "quiche/quic/core/quic_dispatcher.h" 10 11 namespace quic { 12 13 class QuicPacketWriterWrapper; 14 15 namespace test { 16 17 class QuicDispatcherPeer { 18 public: 19 QuicDispatcherPeer() = delete; 20 21 static QuicTimeWaitListManager* GetTimeWaitListManager( 22 QuicDispatcher* dispatcher); 23 24 static void SetTimeWaitListManager( 25 QuicDispatcher* dispatcher, 26 QuicTimeWaitListManager* time_wait_list_manager); 27 28 // Injects |writer| into |dispatcher| as the shared writer. 29 static void UseWriter(QuicDispatcher* dispatcher, 30 QuicPacketWriterWrapper* writer); 31 32 static QuicPacketWriter* GetWriter(QuicDispatcher* dispatcher); 33 34 static QuicCompressedCertsCache* GetCache(QuicDispatcher* dispatcher); 35 36 static QuicConnectionHelperInterface* GetHelper(QuicDispatcher* dispatcher); 37 38 static QuicAlarmFactory* GetAlarmFactory(QuicDispatcher* dispatcher); 39 40 static QuicDispatcher::WriteBlockedList* GetWriteBlockedList( 41 QuicDispatcher* dispatcher); 42 43 // Get the dispatcher's record of the last error reported to its framer 44 // visitor's OnError() method. Then set that record to QUIC_NO_ERROR. 45 static QuicErrorCode GetAndClearLastError(QuicDispatcher* dispatcher); 46 47 static QuicBufferedPacketStore* GetBufferedPackets( 48 QuicDispatcher* dispatcher); 49 50 static void set_new_sessions_allowed_per_event_loop( 51 QuicDispatcher* dispatcher, size_t num_session_allowed); 52 53 static void SendPublicReset( 54 QuicDispatcher* dispatcher, const QuicSocketAddress& self_address, 55 const QuicSocketAddress& peer_address, QuicConnectionId connection_id, 56 bool ietf_quic, size_t received_packet_length, 57 std::unique_ptr<QuicPerPacketContext> packet_context); 58 59 static std::unique_ptr<QuicPerPacketContext> GetPerPacketContext( 60 QuicDispatcher* dispatcher); 61 62 static void RestorePerPacketContext(QuicDispatcher* dispatcher, 63 std::unique_ptr<QuicPerPacketContext>); 64 65 static std::string SelectAlpn(QuicDispatcher* dispatcher, 66 const std::vector<std::string>& alpns); 67 68 // Get the first session in the session map. Returns nullptr if the map is 69 // empty. 70 static QuicSession* GetFirstSessionIfAny(QuicDispatcher* dispatcher); 71 72 // Find the corresponding session if exsits. 73 static const QuicSession* FindSession(const QuicDispatcher* dispatcher, 74 QuicConnectionId id); 75 76 static QuicAlarm* GetClearResetAddressesAlarm(QuicDispatcher* dispatcher); 77 }; 78 79 } // namespace test 80 } // namespace quic 81 82 #endif // QUICHE_QUIC_TEST_TOOLS_QUIC_DISPATCHER_PEER_H_ 83