| // Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include "quiche/quic/tools/quic_default_client.h" | |
| #include <memory> | |
| #include <utility> | |
| #include "quiche/quic/core/quic_connection.h" | |
| #include "quiche/quic/core/quic_default_connection_helper.h" | |
| #include "quiche/quic/core/quic_server_id.h" | |
| #include "quiche/quic/platform/api/quic_socket_address.h" | |
| #include "quiche/quic/tools/quic_simple_client_session.h" | |
| namespace quic { | |
| QuicDefaultClient::QuicDefaultClient( | |
| QuicSocketAddress server_address, const QuicServerId& server_id, | |
| const ParsedQuicVersionVector& supported_versions, | |
| QuicEventLoop* event_loop, std::unique_ptr<ProofVerifier> proof_verifier) | |
| : QuicDefaultClient( | |
| server_address, server_id, supported_versions, QuicConfig(), | |
| event_loop, | |
| std::make_unique<QuicClientDefaultNetworkHelper>(event_loop, this), | |
| std::move(proof_verifier), nullptr) {} | |
| QuicDefaultClient::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) | |
| : QuicDefaultClient( | |
| server_address, server_id, supported_versions, QuicConfig(), | |
| event_loop, | |
| std::make_unique<QuicClientDefaultNetworkHelper>(event_loop, this), | |
| std::move(proof_verifier), std::move(session_cache)) {} | |
| QuicDefaultClient::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) | |
| : QuicDefaultClient( | |
| server_address, server_id, supported_versions, config, event_loop, | |
| std::make_unique<QuicClientDefaultNetworkHelper>(event_loop, this), | |
| std::move(proof_verifier), std::move(session_cache)) {} | |
| QuicDefaultClient::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) | |
| : QuicDefaultClient(server_address, server_id, supported_versions, | |
| QuicConfig(), event_loop, std::move(network_helper), | |
| std::move(proof_verifier), nullptr) {} | |
| QuicDefaultClient::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) | |
| : QuicDefaultClient(server_address, server_id, supported_versions, config, | |
| event_loop, std::move(network_helper), | |
| std::move(proof_verifier), nullptr) {} | |
| QuicDefaultClient::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) | |
| : QuicSpdyClientBase(server_id, supported_versions, config, | |
| new QuicDefaultConnectionHelper(), | |
| event_loop->CreateAlarmFactory().release(), | |
| std::move(network_helper), std::move(proof_verifier), | |
| std::move(session_cache)) { | |
| set_server_address(server_address); | |
| } | |
| QuicDefaultClient::~QuicDefaultClient() = default; | |
| std::unique_ptr<QuicSession> QuicDefaultClient::CreateQuicClientSession( | |
| const ParsedQuicVersionVector& supported_versions, | |
| QuicConnection* connection) { | |
| return std::make_unique<QuicSimpleClientSession>( | |
| *config(), supported_versions, connection, this, network_helper(), | |
| server_id(), crypto_config(), drop_response_body(), | |
| enable_web_transport()); | |
| } | |
| QuicClientDefaultNetworkHelper* QuicDefaultClient::default_network_helper() { | |
| return static_cast<QuicClientDefaultNetworkHelper*>(network_helper()); | |
| } | |
| const QuicClientDefaultNetworkHelper* | |
| QuicDefaultClient::default_network_helper() const { | |
| return static_cast<const QuicClientDefaultNetworkHelper*>(network_helper()); | |
| } | |
| } // namespace quic |