xref: /aosp_15_r20/external/cronet/net/third_party/quiche/src/quiche/quic/tools/quic_epoll_client_factory.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright (c) 2019 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_epoll_client_factory.h"
6 
7 #include <utility>
8 
9 #include "absl/strings/str_cat.h"
10 #include "quiche/quic/core/io/quic_default_event_loop.h"
11 #include "quiche/quic/core/quic_default_clock.h"
12 #include "quiche/quic/core/quic_server_id.h"
13 #include "quiche/quic/platform/api/quic_socket_address.h"
14 #include "quiche/quic/tools/quic_default_client.h"
15 #include "quiche/quic/tools/quic_name_lookup.h"
16 
17 namespace quic {
18 
QuicEpollClientFactory()19 QuicEpollClientFactory::QuicEpollClientFactory()
20     : event_loop_(GetDefaultEventLoop()->Create(QuicDefaultClock::Get())) {}
21 
CreateClient(std::string host_for_handshake,std::string host_for_lookup,int address_family_for_lookup,uint16_t port,ParsedQuicVersionVector versions,const QuicConfig & config,std::unique_ptr<ProofVerifier> verifier,std::unique_ptr<SessionCache> session_cache)22 std::unique_ptr<QuicSpdyClientBase> QuicEpollClientFactory::CreateClient(
23     std::string host_for_handshake, std::string host_for_lookup,
24     int address_family_for_lookup, uint16_t port,
25     ParsedQuicVersionVector versions, const QuicConfig& config,
26     std::unique_ptr<ProofVerifier> verifier,
27     std::unique_ptr<SessionCache> session_cache) {
28   QuicSocketAddress addr = tools::LookupAddress(
29       address_family_for_lookup, host_for_lookup, absl::StrCat(port));
30   if (!addr.IsInitialized()) {
31     QUIC_LOG(ERROR) << "Unable to resolve address: " << host_for_lookup;
32     return nullptr;
33   }
34   QuicServerId server_id(host_for_handshake, port, false);
35   return std::make_unique<QuicDefaultClient>(
36       addr, server_id, versions, config, event_loop_.get(), std::move(verifier),
37       std::move(session_cache));
38 }
39 
40 }  // namespace quic
41