Move QuicToyClient::ClientFactory to its own file
This is necessary to avoid a dependency on QuicToyClient from the
QuicEpollClientFactory, which we want to avoid because the toy client
defines way to many flags.
PiperOrigin-RevId: 486476799
diff --git a/build/source_list.bzl b/build/source_list.bzl
index afc80c7..4d627c1 100644
--- a/build/source_list.bzl
+++ b/build/source_list.bzl
@@ -968,7 +968,9 @@
"quic/masque/masque_utils.h",
"quic/platform/api/quic_udp_socket_platform_api.h",
"quic/tools/quic_client_default_network_helper.h",
+ "quic/tools/quic_client_factory.h",
"quic/tools/quic_default_client.h",
+ "quic/tools/quic_epoll_client_factory.h",
"quic/tools/quic_server.h",
]
io_tool_support_srcs = [
@@ -993,6 +995,7 @@
"quic/masque/masque_utils.cc",
"quic/tools/quic_client_default_network_helper.cc",
"quic/tools/quic_default_client.cc",
+ "quic/tools/quic_epoll_client_factory.cc",
"quic/tools/quic_server.cc",
]
io_test_support_hdrs = [
@@ -1310,7 +1313,6 @@
"quic/test_tools/fuzzing/quic_framer_process_data_packet_fuzzer.cc",
]
cli_tools_hdrs = [
- "quic/tools/quic_epoll_client_factory.h",
"quic/tools/quic_server_factory.h",
"quic/tools/quic_toy_client.h",
"quic/tools/quic_toy_server.h",
@@ -1322,7 +1324,6 @@
"quic/tools/qpack_offline_decoder_bin.cc",
"quic/tools/quic_client_bin.cc",
"quic/tools/quic_client_interop_test_bin.cc",
- "quic/tools/quic_epoll_client_factory.cc",
"quic/tools/quic_packet_printer_bin.cc",
"quic/tools/quic_reject_reason_decoder_bin.cc",
"quic/tools/quic_server_bin.cc",
diff --git a/build/source_list.gni b/build/source_list.gni
index 53814a2..82132ae 100644
--- a/build/source_list.gni
+++ b/build/source_list.gni
@@ -968,7 +968,9 @@
"src/quiche/quic/masque/masque_utils.h",
"src/quiche/quic/platform/api/quic_udp_socket_platform_api.h",
"src/quiche/quic/tools/quic_client_default_network_helper.h",
+ "src/quiche/quic/tools/quic_client_factory.h",
"src/quiche/quic/tools/quic_default_client.h",
+ "src/quiche/quic/tools/quic_epoll_client_factory.h",
"src/quiche/quic/tools/quic_server.h",
]
io_tool_support_srcs = [
@@ -993,6 +995,7 @@
"src/quiche/quic/masque/masque_utils.cc",
"src/quiche/quic/tools/quic_client_default_network_helper.cc",
"src/quiche/quic/tools/quic_default_client.cc",
+ "src/quiche/quic/tools/quic_epoll_client_factory.cc",
"src/quiche/quic/tools/quic_server.cc",
]
io_test_support_hdrs = [
@@ -1310,7 +1313,6 @@
"src/quiche/quic/test_tools/fuzzing/quic_framer_process_data_packet_fuzzer.cc",
]
cli_tools_hdrs = [
- "src/quiche/quic/tools/quic_epoll_client_factory.h",
"src/quiche/quic/tools/quic_server_factory.h",
"src/quiche/quic/tools/quic_toy_client.h",
"src/quiche/quic/tools/quic_toy_server.h",
@@ -1322,7 +1324,6 @@
"src/quiche/quic/tools/qpack_offline_decoder_bin.cc",
"src/quiche/quic/tools/quic_client_bin.cc",
"src/quiche/quic/tools/quic_client_interop_test_bin.cc",
- "src/quiche/quic/tools/quic_epoll_client_factory.cc",
"src/quiche/quic/tools/quic_packet_printer_bin.cc",
"src/quiche/quic/tools/quic_reject_reason_decoder_bin.cc",
"src/quiche/quic/tools/quic_server_bin.cc",
diff --git a/build/source_list.json b/build/source_list.json
index a877e81..3ded441 100644
--- a/build/source_list.json
+++ b/build/source_list.json
@@ -967,7 +967,9 @@
"quiche/quic/masque/masque_utils.h",
"quiche/quic/platform/api/quic_udp_socket_platform_api.h",
"quiche/quic/tools/quic_client_default_network_helper.h",
+ "quiche/quic/tools/quic_client_factory.h",
"quiche/quic/tools/quic_default_client.h",
+ "quiche/quic/tools/quic_epoll_client_factory.h",
"quiche/quic/tools/quic_server.h"
],
"io_tool_support_srcs": [
@@ -992,6 +994,7 @@
"quiche/quic/masque/masque_utils.cc",
"quiche/quic/tools/quic_client_default_network_helper.cc",
"quiche/quic/tools/quic_default_client.cc",
+ "quiche/quic/tools/quic_epoll_client_factory.cc",
"quiche/quic/tools/quic_server.cc"
],
"io_test_support_hdrs": [
@@ -1309,7 +1312,6 @@
"quiche/quic/test_tools/fuzzing/quic_framer_process_data_packet_fuzzer.cc"
],
"cli_tools_hdrs": [
- "quiche/quic/tools/quic_epoll_client_factory.h",
"quiche/quic/tools/quic_server_factory.h",
"quiche/quic/tools/quic_toy_client.h",
"quiche/quic/tools/quic_toy_server.h"
@@ -1321,7 +1323,6 @@
"quiche/quic/tools/qpack_offline_decoder_bin.cc",
"quiche/quic/tools/quic_client_bin.cc",
"quiche/quic/tools/quic_client_interop_test_bin.cc",
- "quiche/quic/tools/quic_epoll_client_factory.cc",
"quiche/quic/tools/quic_packet_printer_bin.cc",
"quiche/quic/tools/quic_reject_reason_decoder_bin.cc",
"quiche/quic/tools/quic_server_bin.cc",
diff --git a/quiche/quic/tools/quic_client_factory.h b/quiche/quic/tools/quic_client_factory.h
new file mode 100644
index 0000000..df4aab9
--- /dev/null
+++ b/quiche/quic/tools/quic_client_factory.h
@@ -0,0 +1,35 @@
+// Copyright (c) 2022 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.
+
+#ifndef QUICHE_QUIC_TOOLS_QUIC_CLIENT_FACTORY_H_
+#define QUICHE_QUIC_TOOLS_QUIC_CLIENT_FACTORY_H_
+
+#include "quiche/quic/core/crypto/proof_verifier.h"
+#include "quiche/quic/core/crypto/quic_crypto_client_config.h"
+#include "quiche/quic/core/quic_config.h"
+#include "quiche/quic/core/quic_versions.h"
+#include "quiche/quic/tools/quic_spdy_client_base.h"
+
+namespace quic {
+
+// Interface implemented by Factories to create QuicClients.
+class ClientFactoryInterface {
+ public:
+ virtual ~ClientFactoryInterface() = default;
+
+ // Creates a new client configured to connect to |host_for_lookup:port|
+ // supporting |versions|, using |host_for_handshake| for handshake and
+ // |verifier| to verify proofs.
+ virtual std::unique_ptr<QuicSpdyClientBase> CreateClient(
+ std::string host_for_handshake, std::string host_for_lookup,
+ // AF_INET, AF_INET6, or AF_UNSPEC(=don't care).
+ int address_family_for_lookup, uint16_t port,
+ ParsedQuicVersionVector versions, const QuicConfig& config,
+ std::unique_ptr<ProofVerifier> verifier,
+ std::unique_ptr<SessionCache> session_cache) = 0;
+};
+
+} // namespace quic
+
+#endif // QUICHE_QUIC_TOOLS_QUIC_CLIENT_FACTORY_H_
diff --git a/quiche/quic/tools/quic_epoll_client_factory.h b/quiche/quic/tools/quic_epoll_client_factory.h
index 962a714..ab5e882 100644
--- a/quiche/quic/tools/quic_epoll_client_factory.h
+++ b/quiche/quic/tools/quic_epoll_client_factory.h
@@ -8,12 +8,12 @@
#include <memory>
#include "quiche/quic/core/io/quic_event_loop.h"
-#include "quiche/quic/tools/quic_toy_client.h"
+#include "quiche/quic/tools/quic_client_factory.h"
namespace quic {
// Factory creating QuicClient instances.
-class QuicEpollClientFactory : public QuicToyClient::ClientFactory {
+class QuicEpollClientFactory : public ClientFactoryInterface {
public:
QuicEpollClientFactory();
diff --git a/quiche/quic/tools/quic_toy_client.h b/quiche/quic/tools/quic_toy_client.h
index 7639482..50e42c4 100644
--- a/quiche/quic/tools/quic_toy_client.h
+++ b/quiche/quic/tools/quic_toy_client.h
@@ -8,39 +8,26 @@
#ifndef QUICHE_QUIC_TOOLS_QUIC_TOY_CLIENT_H_
#define QUICHE_QUIC_TOOLS_QUIC_TOY_CLIENT_H_
-#include "quiche/quic/tools/quic_spdy_client_base.h"
+#include "quiche/quic/tools/quic_client_factory.h"
namespace quic {
class QuicToyClient {
public:
- class ClientFactory {
- public:
- virtual ~ClientFactory() = default;
-
- // Creates a new client configured to connect to |host_for_lookup:port|
- // supporting |versions|, using |host_for_handshake| for handshake and
- // |verifier| to verify proofs.
- virtual std::unique_ptr<QuicSpdyClientBase> CreateClient(
- std::string host_for_handshake, std::string host_for_lookup,
- // AF_INET, AF_INET6, or AF_UNSPEC(=don't care).
- int address_family_for_lookup, uint16_t port,
- ParsedQuicVersionVector versions, const QuicConfig& config,
- std::unique_ptr<ProofVerifier> verifier,
- std::unique_ptr<SessionCache> session_cache) = 0;
- };
-
// Constructs a new toy client that will use |client_factory| to create the
// actual QuicSpdyClientBase instance.
- QuicToyClient(ClientFactory* client_factory);
+ QuicToyClient(ClientFactoryInterface* client_factory);
// Connects to the QUIC server based on the various flags defined in the
// .cc file, sends requests and prints the responses. Returns 0 on success
// and non-zero otherwise.
int SendRequestsAndPrintResponses(std::vector<std::string> urls);
+ // Compatibility alias
+ using ClientFactory = ClientFactoryInterface;
+
private:
- ClientFactory* client_factory_; // Unowned.
+ ClientFactoryInterface* client_factory_; // Unowned.
};
} // namespace quic