xref: /aosp_15_r20/external/cronet/net/third_party/quiche/src/quiche/quic/test_tools/quic_dispatcher_peer.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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