xref: /aosp_15_r20/external/cronet/net/third_party/quiche/src/quiche/quic/tools/quic_default_client.cc (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 #include "quiche/quic/tools/quic_default_client.h"
6 
7 #include <utility>
8 
9 #include "quiche/quic/core/quic_connection.h"
10 #include "quiche/quic/core/quic_default_connection_helper.h"
11 #include "quiche/quic/core/quic_server_id.h"
12 #include "quiche/quic/platform/api/quic_socket_address.h"
13 #include "quiche/quic/tools/quic_simple_client_session.h"
14 
15 namespace quic {
16 
QuicDefaultClient(QuicSocketAddress server_address,const QuicServerId & server_id,const ParsedQuicVersionVector & supported_versions,QuicEventLoop * event_loop,std::unique_ptr<ProofVerifier> proof_verifier)17 QuicDefaultClient::QuicDefaultClient(
18     QuicSocketAddress server_address, const QuicServerId& server_id,
19     const ParsedQuicVersionVector& supported_versions,
20     QuicEventLoop* event_loop, std::unique_ptr<ProofVerifier> proof_verifier)
21     : QuicDefaultClient(
22           server_address, server_id, supported_versions, QuicConfig(),
23           event_loop,
24           std::make_unique<QuicClientDefaultNetworkHelper>(event_loop, this),
25           std::move(proof_verifier), nullptr) {}
26 
QuicDefaultClient(QuicSocketAddress server_address,const QuicServerId & server_id,const ParsedQuicVersionVector & supported_versions,QuicEventLoop * event_loop,std::unique_ptr<ProofVerifier> proof_verifier,std::unique_ptr<SessionCache> session_cache)27 QuicDefaultClient::QuicDefaultClient(
28     QuicSocketAddress server_address, const QuicServerId& server_id,
29     const ParsedQuicVersionVector& supported_versions,
30     QuicEventLoop* event_loop, std::unique_ptr<ProofVerifier> proof_verifier,
31     std::unique_ptr<SessionCache> session_cache)
32     : QuicDefaultClient(
33           server_address, server_id, supported_versions, QuicConfig(),
34           event_loop,
35           std::make_unique<QuicClientDefaultNetworkHelper>(event_loop, this),
36           std::move(proof_verifier), std::move(session_cache)) {}
37 
QuicDefaultClient(QuicSocketAddress server_address,const QuicServerId & server_id,const ParsedQuicVersionVector & supported_versions,const QuicConfig & config,QuicEventLoop * event_loop,std::unique_ptr<ProofVerifier> proof_verifier,std::unique_ptr<SessionCache> session_cache)38 QuicDefaultClient::QuicDefaultClient(
39     QuicSocketAddress server_address, const QuicServerId& server_id,
40     const ParsedQuicVersionVector& supported_versions, const QuicConfig& config,
41     QuicEventLoop* event_loop, std::unique_ptr<ProofVerifier> proof_verifier,
42     std::unique_ptr<SessionCache> session_cache)
43     : QuicDefaultClient(
44           server_address, server_id, supported_versions, config, event_loop,
45           std::make_unique<QuicClientDefaultNetworkHelper>(event_loop, this),
46           std::move(proof_verifier), std::move(session_cache)) {}
47 
QuicDefaultClient(QuicSocketAddress server_address,const QuicServerId & server_id,const ParsedQuicVersionVector & supported_versions,QuicEventLoop * event_loop,std::unique_ptr<QuicClientDefaultNetworkHelper> network_helper,std::unique_ptr<ProofVerifier> proof_verifier)48 QuicDefaultClient::QuicDefaultClient(
49     QuicSocketAddress server_address, const QuicServerId& server_id,
50     const ParsedQuicVersionVector& supported_versions,
51     QuicEventLoop* event_loop,
52     std::unique_ptr<QuicClientDefaultNetworkHelper> network_helper,
53     std::unique_ptr<ProofVerifier> proof_verifier)
54     : QuicDefaultClient(server_address, server_id, supported_versions,
55                         QuicConfig(), event_loop, std::move(network_helper),
56                         std::move(proof_verifier), nullptr) {}
57 
QuicDefaultClient(QuicSocketAddress server_address,const QuicServerId & server_id,const ParsedQuicVersionVector & supported_versions,const QuicConfig & config,QuicEventLoop * event_loop,std::unique_ptr<QuicClientDefaultNetworkHelper> network_helper,std::unique_ptr<ProofVerifier> proof_verifier)58 QuicDefaultClient::QuicDefaultClient(
59     QuicSocketAddress server_address, const QuicServerId& server_id,
60     const ParsedQuicVersionVector& supported_versions, const QuicConfig& config,
61     QuicEventLoop* event_loop,
62     std::unique_ptr<QuicClientDefaultNetworkHelper> network_helper,
63     std::unique_ptr<ProofVerifier> proof_verifier)
64     : QuicDefaultClient(server_address, server_id, supported_versions, config,
65                         event_loop, std::move(network_helper),
66                         std::move(proof_verifier), nullptr) {}
67 
QuicDefaultClient(QuicSocketAddress server_address,const QuicServerId & server_id,const ParsedQuicVersionVector & supported_versions,const QuicConfig & config,QuicEventLoop * event_loop,std::unique_ptr<QuicClientDefaultNetworkHelper> network_helper,std::unique_ptr<ProofVerifier> proof_verifier,std::unique_ptr<SessionCache> session_cache)68 QuicDefaultClient::QuicDefaultClient(
69     QuicSocketAddress server_address, const QuicServerId& server_id,
70     const ParsedQuicVersionVector& supported_versions, const QuicConfig& config,
71     QuicEventLoop* event_loop,
72     std::unique_ptr<QuicClientDefaultNetworkHelper> network_helper,
73     std::unique_ptr<ProofVerifier> proof_verifier,
74     std::unique_ptr<SessionCache> session_cache)
75     : QuicSpdyClientBase(server_id, supported_versions, config,
76                          new QuicDefaultConnectionHelper(),
77                          event_loop->CreateAlarmFactory().release(),
78                          std::move(network_helper), std::move(proof_verifier),
79                          std::move(session_cache)) {
80   set_server_address(server_address);
81 }
82 
83 QuicDefaultClient::~QuicDefaultClient() = default;
84 
CreateQuicClientSession(const ParsedQuicVersionVector & supported_versions,QuicConnection * connection)85 std::unique_ptr<QuicSession> QuicDefaultClient::CreateQuicClientSession(
86     const ParsedQuicVersionVector& supported_versions,
87     QuicConnection* connection) {
88   return std::make_unique<QuicSimpleClientSession>(
89       *config(), supported_versions, connection, this, network_helper(),
90       server_id(), crypto_config(), drop_response_body(),
91       enable_web_transport());
92 }
93 
default_network_helper()94 QuicClientDefaultNetworkHelper* QuicDefaultClient::default_network_helper() {
95   return static_cast<QuicClientDefaultNetworkHelper*>(network_helper());
96 }
97 
98 const QuicClientDefaultNetworkHelper*
default_network_helper() const99 QuicDefaultClient::default_network_helper() const {
100   return static_cast<const QuicClientDefaultNetworkHelper*>(network_helper());
101 }
102 
103 }  // namespace quic
104