xref: /aosp_15_r20/external/cronet/net/third_party/quiche/src/quiche/quic/tools/quic_default_client.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright (c) 2012 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 // A toy client, which connects to a specified port and sends QUIC
6 // request to that endpoint.
7 
8 #ifndef QUICHE_QUIC_TOOLS_QUIC_DEFAULT_CLIENT_H_
9 #define QUICHE_QUIC_TOOLS_QUIC_DEFAULT_CLIENT_H_
10 
11 #include <cstdint>
12 #include <memory>
13 #include <string>
14 
15 #include "quiche/quic/core/io/quic_event_loop.h"
16 #include "quiche/quic/core/quic_config.h"
17 #include "quiche/quic/tools/quic_client_default_network_helper.h"
18 #include "quiche/quic/tools/quic_spdy_client_base.h"
19 
20 namespace quic {
21 
22 class QuicServerId;
23 
24 namespace test {
25 class QuicDefaultClientPeer;
26 }  // namespace test
27 
28 class QuicDefaultClient : public QuicSpdyClientBase {
29  public:
30   // These will create their own QuicClientDefaultNetworkHelper.
31   QuicDefaultClient(QuicSocketAddress server_address,
32                     const QuicServerId& server_id,
33                     const ParsedQuicVersionVector& supported_versions,
34                     QuicEventLoop* event_loop,
35                     std::unique_ptr<ProofVerifier> proof_verifier);
36   QuicDefaultClient(QuicSocketAddress server_address,
37                     const QuicServerId& server_id,
38                     const ParsedQuicVersionVector& supported_versions,
39                     QuicEventLoop* event_loop,
40                     std::unique_ptr<ProofVerifier> proof_verifier,
41                     std::unique_ptr<SessionCache> session_cache);
42   QuicDefaultClient(QuicSocketAddress server_address,
43                     const QuicServerId& server_id,
44                     const ParsedQuicVersionVector& supported_versions,
45                     const QuicConfig& config, QuicEventLoop* event_loop,
46                     std::unique_ptr<ProofVerifier> proof_verifier,
47                     std::unique_ptr<SessionCache> session_cache);
48   // This will take ownership of a passed in network primitive.
49   QuicDefaultClient(
50       QuicSocketAddress server_address, const QuicServerId& server_id,
51       const ParsedQuicVersionVector& supported_versions,
52       QuicEventLoop* event_loop,
53       std::unique_ptr<QuicClientDefaultNetworkHelper> network_helper,
54       std::unique_ptr<ProofVerifier> proof_verifier);
55   QuicDefaultClient(
56       QuicSocketAddress server_address, const QuicServerId& server_id,
57       const ParsedQuicVersionVector& supported_versions,
58       const QuicConfig& config, QuicEventLoop* event_loop,
59       std::unique_ptr<QuicClientDefaultNetworkHelper> network_helper,
60       std::unique_ptr<ProofVerifier> proof_verifier);
61   QuicDefaultClient(
62       QuicSocketAddress server_address, const QuicServerId& server_id,
63       const ParsedQuicVersionVector& supported_versions,
64       const QuicConfig& config, QuicEventLoop* event_loop,
65       std::unique_ptr<QuicClientDefaultNetworkHelper> network_helper,
66       std::unique_ptr<ProofVerifier> proof_verifier,
67       std::unique_ptr<SessionCache> session_cache);
68   QuicDefaultClient(const QuicDefaultClient&) = delete;
69   QuicDefaultClient& operator=(const QuicDefaultClient&) = delete;
70 
71   ~QuicDefaultClient() override;
72 
73   // QuicSpdyClientBase overrides.
74   std::unique_ptr<QuicSession> CreateQuicClientSession(
75       const ParsedQuicVersionVector& supported_versions,
76       QuicConnection* connection) override;
77 
78   // Exposed for QUIC tests.
GetLatestFD()79   int GetLatestFD() const { return default_network_helper()->GetLatestFD(); }
80 
81   QuicClientDefaultNetworkHelper* default_network_helper();
82   const QuicClientDefaultNetworkHelper* default_network_helper() const;
83 };
84 
85 }  // namespace quic
86 
87 #endif  // QUICHE_QUIC_TOOLS_QUIC_DEFAULT_CLIENT_H_
88