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