Move CLI flag parsing into a separate header.
We use feature flags almost everywhere in the code, while the command line flags are only used in the CLI tools, meaning that they have a different set of platform restrictions.
PiperOrigin-RevId: 425450191
diff --git a/common/platform/api/quiche_command_line_flags.h b/common/platform/api/quiche_command_line_flags.h
new file mode 100644
index 0000000..3ba48bb
--- /dev/null
+++ b/common/platform/api/quiche_command_line_flags.h
@@ -0,0 +1,38 @@
+// Copyright (c) 2017 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_COMMON_PLATFORM_API_QUICHE_COMMAND_LINE_FLAGS_H_
+#define QUICHE_COMMON_PLATFORM_API_QUICHE_COMMAND_LINE_FLAGS_H_
+
+#include <string>
+#include <vector>
+
+#include "net/quiche/common/platform/impl/quiche_command_line_flags_impl.h"
+
+// Define a command-line flag that can be automatically set via
+// QuicheParseCommandLineFlags().
+#define DEFINE_QUICHE_COMMAND_LINE_FLAG(type, name, default_value, help) \
+ DEFINE_QUICHE_COMMAND_LINE_FLAG_IMPL(type, name, default_value, help)
+
+namespace quiche {
+
+// Parses command-line flags, setting flag variables defined using
+// DEFINE_QUICHE_COMMAND_LINE_FLAG if they appear in the command line, and
+// returning a list of any non-flag arguments specified in the command line. If
+// the command line specifies '-h' or '--help', prints a usage message with flag
+// descriptions to stdout and exits with status 0. If a flag has an unparsable
+// value, writes an error message to stderr and exits with status 1.
+inline std::vector<std::string> QuicheParseCommandLineFlags(
+ const char* usage, int argc, const char* const* argv) {
+ return QuicheParseCommandLineFlagsImpl(usage, argc, argv);
+}
+
+// Prints a usage message with flag descriptions to stdout.
+inline void QuichePrintCommandLineFlagHelp(const char* usage) {
+ QuichePrintCommandLineFlagHelpImpl(usage);
+}
+
+} // namespace quiche
+
+#endif // QUICHE_COMMON_PLATFORM_API_QUICHE_COMMAND_LINE_FLAGS_H_
diff --git a/quic/core/congestion_control/bbr2_simulator_test.cc b/quic/core/congestion_control/bbr2_simulator_test.cc
index fbf1343..c634db5 100644
--- a/quic/core/congestion_control/bbr2_simulator_test.cc
+++ b/quic/core/congestion_control/bbr2_simulator_test.cc
@@ -29,15 +29,14 @@
#include "quic/test_tools/simulator/simulator.h"
#include "quic/test_tools/simulator/switch.h"
#include "quic/test_tools/simulator/traffic_policer.h"
+#include "common/platform/api/quiche_command_line_flags.h"
using testing::AllOf;
using testing::Ge;
using testing::Le;
-DEFINE_QUIC_COMMAND_LINE_FLAG(
- std::string,
- quic_bbr2_test_regression_mode,
- "",
+DEFINE_QUICHE_COMMAND_LINE_FLAG(
+ std::string, quic_bbr2_test_regression_mode, "",
"One of a) 'record' to record test result (one file per test), or "
"b) 'regress' to regress against recorded results, or "
"c) <anything else> for non-regression mode.");
diff --git a/quic/core/congestion_control/bbr_sender_test.cc b/quic/core/congestion_control/bbr_sender_test.cc
index 8973f94..caba9b1 100644
--- a/quic/core/congestion_control/bbr_sender_test.cc
+++ b/quic/core/congestion_control/bbr_sender_test.cc
@@ -28,15 +28,14 @@
#include "quic/test_tools/simulator/quic_endpoint.h"
#include "quic/test_tools/simulator/simulator.h"
#include "quic/test_tools/simulator/switch.h"
+#include "common/platform/api/quiche_command_line_flags.h"
using testing::AllOf;
using testing::Ge;
using testing::Le;
-DEFINE_QUIC_COMMAND_LINE_FLAG(
- std::string,
- quic_bbr_test_regression_mode,
- "",
+DEFINE_QUICHE_COMMAND_LINE_FLAG(
+ std::string, quic_bbr_test_regression_mode, "",
"One of a) 'record' to record test result (one file per test), or "
"b) 'regress' to regress against recorded results, or "
"c) <anything else> for non-regression mode.");
diff --git a/quic/core/crypto/crypto_message_printer_bin.cc b/quic/core/crypto/crypto_message_printer_bin.cc
index 68e3d9c..0159e30 100644
--- a/quic/core/crypto/crypto_message_printer_bin.cc
+++ b/quic/core/crypto/crypto_message_printer_bin.cc
@@ -13,6 +13,7 @@
#include "absl/strings/escaping.h"
#include "quic/core/crypto/crypto_framer.h"
#include "quic/core/quic_utils.h"
+#include "common/platform/api/quiche_command_line_flags.h"
using std::cerr;
using std::cout;
@@ -37,9 +38,9 @@
int main(int argc, char* argv[]) {
const char* usage = "Usage: crypto_message_printer <hex>";
std::vector<std::string> messages =
- quic::QuicParseCommandLineFlags(usage, argc, argv);
+ quiche::QuicheParseCommandLineFlags(usage, argc, argv);
if (messages.size() != 1) {
- quic::QuicPrintCommandLineFlagHelp(usage);
+ quiche::QuichePrintCommandLineFlagHelp(usage);
exit(0);
}
diff --git a/quic/core/qpack/qpack_offline_decoder_bin.cc b/quic/core/qpack/qpack_offline_decoder_bin.cc
index 8cd1108..20f7a62 100644
--- a/quic/core/qpack/qpack_offline_decoder_bin.cc
+++ b/quic/core/qpack/qpack_offline_decoder_bin.cc
@@ -9,16 +9,17 @@
#include "quic/platform/api/quic_flags.h"
#include "quic/platform/api/quic_logging.h"
#include "quic/test_tools/qpack/qpack_offline_decoder.h"
+#include "common/platform/api/quiche_command_line_flags.h"
int main(int argc, char* argv[]) {
const char* usage =
"Usage: qpack_offline_decoder input_filename expected_headers_filename "
"....";
std::vector<std::string> args =
- quic::QuicParseCommandLineFlags(usage, argc, argv);
+ quiche::QuicheParseCommandLineFlags(usage, argc, argv);
if (args.size() < 2 || args.size() % 2 != 0) {
- quic::QuicPrintCommandLineFlagHelp(usage);
+ quiche::QuichePrintCommandLineFlagHelp(usage);
return 1;
}
diff --git a/quic/masque/masque_client_bin.cc b/quic/masque/masque_client_bin.cc
index 8af288f..fb6a61d 100644
--- a/quic/masque/masque_client_bin.cc
+++ b/quic/masque/masque_client_bin.cc
@@ -23,17 +23,15 @@
#include "quic/platform/api/quic_socket_address.h"
#include "quic/platform/api/quic_system_event_loop.h"
#include "quic/tools/fake_proof_verifier.h"
+#include "common/platform/api/quiche_command_line_flags.h"
-DEFINE_QUIC_COMMAND_LINE_FLAG(bool,
- disable_certificate_verification,
- false,
- "If true, don't verify the server certificate.");
+DEFINE_QUICHE_COMMAND_LINE_FLAG(
+ bool, disable_certificate_verification, false,
+ "If true, don't verify the server certificate.");
-DEFINE_QUIC_COMMAND_LINE_FLAG(std::string,
- masque_mode,
- "",
- "Allows setting MASQUE mode, valid values are "
- "open and legacy. Defaults to open.");
+DEFINE_QUICHE_COMMAND_LINE_FLAG(std::string, masque_mode, "",
+ "Allows setting MASQUE mode, valid values are "
+ "open and legacy. Defaults to open.");
namespace quic {
@@ -48,9 +46,10 @@
// Note that the URI template expansion currently only supports string
// replacement of {target_host} and {target_port}, not
// {?target_host,target_port}.
- std::vector<std::string> urls = QuicParseCommandLineFlags(usage, argc, argv);
+ std::vector<std::string> urls =
+ quiche::QuicheParseCommandLineFlags(usage, argc, argv);
if (urls.empty()) {
- QuicPrintCommandLineFlagHelp(usage);
+ quiche::QuichePrintCommandLineFlagHelp(usage);
return 1;
}
diff --git a/quic/masque/masque_server_bin.cc b/quic/masque/masque_server_bin.cc
index aaccda3..666f67f 100644
--- a/quic/masque/masque_server_bin.cc
+++ b/quic/masque/masque_server_bin.cc
@@ -15,40 +15,33 @@
#include "quic/platform/api/quic_logging.h"
#include "quic/platform/api/quic_socket_address.h"
#include "quic/platform/api/quic_system_event_loop.h"
+#include "common/platform/api/quiche_command_line_flags.h"
-DEFINE_QUIC_COMMAND_LINE_FLAG(int32_t,
- port,
- 9661,
- "The port the MASQUE server will listen on.");
+DEFINE_QUICHE_COMMAND_LINE_FLAG(int32_t, port, 9661,
+ "The port the MASQUE server will listen on.");
-DEFINE_QUIC_COMMAND_LINE_FLAG(
- std::string,
- cache_dir,
- "",
+DEFINE_QUICHE_COMMAND_LINE_FLAG(
+ std::string, cache_dir, "",
"Specifies the directory used during QuicHttpResponseCache "
"construction to seed the cache. Cache directory can be "
"generated using `wget -p --save-headers <url>`");
-DEFINE_QUIC_COMMAND_LINE_FLAG(
- std::string,
- server_authority,
- "",
+DEFINE_QUICHE_COMMAND_LINE_FLAG(
+ std::string, server_authority, "",
"Specifies the authority over which the server will accept MASQUE "
"requests. Defaults to empty which allows all authorities.");
-DEFINE_QUIC_COMMAND_LINE_FLAG(std::string,
- masque_mode,
- "",
- "Allows setting MASQUE mode, valid values are "
- "open and legacy. Defaults to open.");
+DEFINE_QUICHE_COMMAND_LINE_FLAG(std::string, masque_mode, "",
+ "Allows setting MASQUE mode, valid values are "
+ "open and legacy. Defaults to open.");
int main(int argc, char* argv[]) {
QuicSystemEventLoop event_loop("masque_server");
const char* usage = "Usage: masque_server [options]";
std::vector<std::string> non_option_args =
- quic::QuicParseCommandLineFlags(usage, argc, argv);
+ quiche::QuicheParseCommandLineFlags(usage, argc, argv);
if (!non_option_args.empty()) {
- quic::QuicPrintCommandLineFlagHelp(usage);
+ quiche::QuichePrintCommandLineFlagHelp(usage);
return 0;
}
diff --git a/quic/platform/api/quic_flags.h b/quic/platform/api/quic_flags.h
index 1a9f2d9..43f81d4 100644
--- a/quic/platform/api/quic_flags.h
+++ b/quic/platform/api/quic_flags.h
@@ -20,31 +20,4 @@
#define GetQuicFlag(flag) GetQuicheFlag(flag)
#define SetQuicFlag(flag, value) SetQuicheFlag(flag, value)
-// Define a command-line flag that can be automatically set via
-// QuicParseCommandLineFlags().
-#define DEFINE_QUIC_COMMAND_LINE_FLAG(type, name, default_value, help) \
- DEFINE_QUIC_COMMAND_LINE_FLAG_IMPL(type, name, default_value, help)
-
-namespace quic {
-
-// Parses command-line flags, setting flag variables defined using
-// DEFINE_QUIC_COMMAND_LINE_FLAG if they appear in the command line, and
-// returning a list of any non-flag arguments specified in the command line. If
-// the command line specifies '-h' or '--help', prints a usage message with flag
-// descriptions to stdout and exits with status 0. If a flag has an unparsable
-// value, writes an error message to stderr and exits with status 1.
-inline std::vector<std::string> QuicParseCommandLineFlags(
- const char* usage,
- int argc,
- const char* const* argv) {
- return QuicParseCommandLineFlagsImpl(usage, argc, argv);
-}
-
-// Prints a usage message with flag descriptions to stdout.
-inline void QuicPrintCommandLineFlagHelp(const char* usage) {
- QuicPrintCommandLineFlagHelpImpl(usage);
-}
-
-} // namespace quic
-
#endif // QUICHE_QUIC_PLATFORM_API_QUIC_FLAGS_H_
diff --git a/quic/qbone/qbone_client_session.cc b/quic/qbone/qbone_client_session.cc
index fce08d2..87cfb2d 100644
--- a/quic/qbone/qbone_client_session.cc
+++ b/quic/qbone/qbone_client_session.cc
@@ -9,8 +9,9 @@
#include "absl/strings/string_view.h"
#include "quic/core/quic_types.h"
#include "quic/qbone/qbone_constants.h"
+#include "common/platform/api/quiche_command_line_flags.h"
-DEFINE_QUIC_COMMAND_LINE_FLAG(
+DEFINE_QUICHE_COMMAND_LINE_FLAG(
bool, qbone_client_defer_control_stream_creation, true,
"If true, control stream in QBONE client session is created after "
"encryption established.");
diff --git a/quic/qbone/qbone_server_session.cc b/quic/qbone/qbone_server_session.cc
index 1fc0842..bc2d8e5 100644
--- a/quic/qbone/qbone_server_session.cc
+++ b/quic/qbone/qbone_server_session.cc
@@ -12,8 +12,9 @@
#include "quic/core/quic_types.h"
#include "quic/core/quic_utils.h"
#include "quic/qbone/qbone_constants.h"
+#include "common/platform/api/quiche_command_line_flags.h"
-DEFINE_QUIC_COMMAND_LINE_FLAG(
+DEFINE_QUICHE_COMMAND_LINE_FLAG(
bool, qbone_server_defer_control_stream_creation, true,
"If true, control stream in QBONE server session is created after "
"encryption established.");
diff --git a/quic/qbone/qbone_session_base.cc b/quic/qbone/qbone_session_base.cc
index 2b3f295..702f185 100644
--- a/quic/qbone/qbone_session_base.cc
+++ b/quic/qbone/qbone_session_base.cc
@@ -18,11 +18,10 @@
#include "quic/platform/api/quic_testvalue.h"
#include "quic/qbone/platform/icmp_packet.h"
#include "quic/qbone/qbone_constants.h"
+#include "common/platform/api/quiche_command_line_flags.h"
-DEFINE_QUIC_COMMAND_LINE_FLAG(
- bool,
- qbone_close_ephemeral_frames,
- true,
+DEFINE_QUICHE_COMMAND_LINE_FLAG(
+ bool, qbone_close_ephemeral_frames, true,
"If true, we'll call CloseStream even when we receive ephemeral frames.");
namespace quic {
diff --git a/quic/qbone/qbone_stream.cc b/quic/qbone/qbone_stream.cc
index 5aac3e7..3901233 100644
--- a/quic/qbone/qbone_stream.cc
+++ b/quic/qbone/qbone_stream.cc
@@ -10,11 +10,10 @@
#include "quic/core/quic_types.h"
#include "quic/qbone/qbone_constants.h"
#include "quic/qbone/qbone_session_base.h"
+#include "common/platform/api/quiche_command_line_flags.h"
-DEFINE_QUIC_COMMAND_LINE_FLAG(int,
- qbone_stream_ttl_secs,
- 3,
- "The QBONE Stream TTL in seconds.");
+DEFINE_QUICHE_COMMAND_LINE_FLAG(int, qbone_stream_ttl_secs, 3,
+ "The QBONE Stream TTL in seconds.");
namespace quic {
diff --git a/quic/tools/quic_client_bin.cc b/quic/tools/quic_client_bin.cc
index 0b98125..deedddd 100644
--- a/quic/tools/quic_client_bin.cc
+++ b/quic/tools/quic_client_bin.cc
@@ -47,6 +47,7 @@
#include "quic/platform/api/quic_system_event_loop.h"
#include "quic/tools/quic_epoll_client_factory.h"
#include "quic/tools/quic_toy_client.h"
+#include "common/platform/api/quiche_command_line_flags.h"
int main(int argc, char* argv[]) {
QuicSystemEventLoop event_loop("quic_client");
@@ -54,9 +55,9 @@
// All non-flag arguments should be interpreted as URLs to fetch.
std::vector<std::string> urls =
- quic::QuicParseCommandLineFlags(usage, argc, argv);
+ quiche::QuicheParseCommandLineFlags(usage, argc, argv);
if (urls.size() != 1) {
- quic::QuicPrintCommandLineFlagHelp(usage);
+ quiche::QuichePrintCommandLineFlagHelp(usage);
exit(0);
}
diff --git a/quic/tools/quic_client_interop_test_bin.cc b/quic/tools/quic_client_interop_test_bin.cc
index c90c8dd..6c14cc3 100644
--- a/quic/tools/quic_client_interop_test_bin.cc
+++ b/quic/tools/quic_client_interop_test_bin.cc
@@ -19,19 +19,16 @@
#include "quic/tools/fake_proof_verifier.h"
#include "quic/tools/quic_client.h"
#include "quic/tools/quic_url.h"
+#include "common/platform/api/quiche_command_line_flags.h"
-DEFINE_QUIC_COMMAND_LINE_FLAG(std::string,
- host,
- "",
- "The IP or hostname to connect to.");
+DEFINE_QUICHE_COMMAND_LINE_FLAG(std::string, host, "",
+ "The IP or hostname to connect to.");
-DEFINE_QUIC_COMMAND_LINE_FLAG(
- std::string,
- quic_version,
- "",
+DEFINE_QUICHE_COMMAND_LINE_FLAG(
+ std::string, quic_version, "",
"The QUIC version to use. Defaults to most recent IETF QUIC version.");
-DEFINE_QUIC_COMMAND_LINE_FLAG(int32_t, port, 0, "The port to connect to.");
+DEFINE_QUICHE_COMMAND_LINE_FLAG(int32_t, port, 0, "The port to connect to.");
namespace quic {
@@ -403,9 +400,9 @@
const char* usage = "Usage: quic_client_interop_test [options] [url]";
std::vector<std::string> args =
- quic::QuicParseCommandLineFlags(usage, argc, argv);
+ quiche::QuicheParseCommandLineFlags(usage, argc, argv);
if (args.size() > 1) {
- quic::QuicPrintCommandLineFlagHelp(usage);
+ quiche::QuichePrintCommandLineFlagHelp(usage);
exit(1);
}
std::string dns_host = GetQuicFlag(FLAGS_host);
@@ -426,7 +423,7 @@
port = 443;
}
if (dns_host.empty()) {
- quic::QuicPrintCommandLineFlagHelp(usage);
+ quiche::QuichePrintCommandLineFlagHelp(usage);
exit(1);
}
if (url_host.empty()) {
diff --git a/quic/tools/quic_packet_printer_bin.cc b/quic/tools/quic_packet_printer_bin.cc
index ad357e9..8ffae27 100644
--- a/quic/tools/quic_packet_printer_bin.cc
+++ b/quic/tools/quic_packet_printer_bin.cc
@@ -34,12 +34,11 @@
#include "quic/core/quic_types.h"
#include "quic/core/quic_utils.h"
#include "quic/platform/api/quic_flags.h"
+#include "common/platform/api/quiche_command_line_flags.h"
#include "common/quiche_text_utils.h"
-DEFINE_QUIC_COMMAND_LINE_FLAG(std::string,
- quic_version,
- "",
- "If set, specify the QUIC version to use.");
+DEFINE_QUICHE_COMMAND_LINE_FLAG(std::string, quic_version, "",
+ "If set, specify the QUIC version to use.");
namespace quic {
@@ -248,10 +247,10 @@
int main(int argc, char* argv[]) {
const char* usage = "Usage: quic_packet_printer client|server <hex>";
std::vector<std::string> args =
- quic::QuicParseCommandLineFlags(usage, argc, argv);
+ quiche::QuicheParseCommandLineFlags(usage, argc, argv);
if (args.size() < 2) {
- quic::QuicPrintCommandLineFlagHelp(usage);
+ quiche::QuichePrintCommandLineFlagHelp(usage);
return 1;
}
@@ -263,7 +262,7 @@
perspective = quic::Perspective::IS_SERVER;
} else {
std::cerr << "Invalid perspective" << std::endl;
- quic::QuicPrintCommandLineFlagHelp(usage);
+ quiche::QuichePrintCommandLineFlagHelp(usage);
return 1;
}
std::string hex = absl::HexStringToBytes(args[1]);
diff --git a/quic/tools/quic_reject_reason_decoder_bin.cc b/quic/tools/quic_reject_reason_decoder_bin.cc
index 68443f3..ed83d27 100644
--- a/quic/tools/quic_reject_reason_decoder_bin.cc
+++ b/quic/tools/quic_reject_reason_decoder_bin.cc
@@ -11,6 +11,7 @@
#include "quic/core/crypto/crypto_handshake.h"
#include "quic/core/crypto/crypto_utils.h"
#include "quic/platform/api/quic_flags.h"
+#include "common/platform/api/quiche_command_line_flags.h"
#include "common/quiche_text_utils.h"
using quic::CryptoUtils;
@@ -20,7 +21,7 @@
int main(int argc, char* argv[]) {
const char* usage = "Usage: quic_reject_reason_decoder <packed_reason>";
std::vector<std::string> args =
- quic::QuicParseCommandLineFlags(usage, argc, argv);
+ quiche::QuicheParseCommandLineFlags(usage, argc, argv);
if (args.size() != 1) {
std::cerr << usage << std::endl;
diff --git a/quic/tools/quic_server_bin.cc b/quic/tools/quic_server_bin.cc
index c971367..5d3ed72 100644
--- a/quic/tools/quic_server_bin.cc
+++ b/quic/tools/quic_server_bin.cc
@@ -12,14 +12,15 @@
#include "quic/platform/api/quic_system_event_loop.h"
#include "quic/tools/quic_epoll_server_factory.h"
#include "quic/tools/quic_toy_server.h"
+#include "common/platform/api/quiche_command_line_flags.h"
int main(int argc, char* argv[]) {
QuicSystemEventLoop event_loop("quic_server");
const char* usage = "Usage: quic_server [options]";
std::vector<std::string> non_option_args =
- quic::QuicParseCommandLineFlags(usage, argc, argv);
+ quiche::QuicheParseCommandLineFlags(usage, argc, argv);
if (!non_option_args.empty()) {
- quic::QuicPrintCommandLineFlagHelp(usage);
+ quiche::QuichePrintCommandLineFlagHelp(usage);
exit(0);
}
diff --git a/quic/tools/quic_toy_client.cc b/quic/tools/quic_toy_client.cc
index 00507f3..7b6b760 100644
--- a/quic/tools/quic_toy_client.cc
+++ b/quic/tools/quic_toy_client.cc
@@ -63,6 +63,7 @@
#include "quic/platform/api/quic_system_event_loop.h"
#include "quic/tools/fake_proof_verifier.h"
#include "quic/tools/quic_url.h"
+#include "common/platform/api/quiche_command_line_flags.h"
#include "common/quiche_text_utils.h"
namespace {
@@ -71,162 +72,120 @@
} // namespace
-DEFINE_QUIC_COMMAND_LINE_FLAG(
- std::string,
- host,
- "",
+DEFINE_QUICHE_COMMAND_LINE_FLAG(
+ std::string, host, "",
"The IP or hostname to connect to. If not provided, the host "
"will be derived from the provided URL.");
-DEFINE_QUIC_COMMAND_LINE_FLAG(int32_t, port, 0, "The port to connect to.");
+DEFINE_QUICHE_COMMAND_LINE_FLAG(int32_t, port, 0, "The port to connect to.");
-DEFINE_QUIC_COMMAND_LINE_FLAG(std::string,
- ip_version_for_host_lookup,
- "",
- "Only used if host address lookup is needed. "
- "4=ipv4; 6=ipv6; otherwise=don't care.");
+DEFINE_QUICHE_COMMAND_LINE_FLAG(std::string, ip_version_for_host_lookup, "",
+ "Only used if host address lookup is needed. "
+ "4=ipv4; 6=ipv6; otherwise=don't care.");
-DEFINE_QUIC_COMMAND_LINE_FLAG(std::string,
- body,
- "",
- "If set, send a POST with this body.");
+DEFINE_QUICHE_COMMAND_LINE_FLAG(std::string, body, "",
+ "If set, send a POST with this body.");
-DEFINE_QUIC_COMMAND_LINE_FLAG(
- std::string,
- body_hex,
- "",
+DEFINE_QUICHE_COMMAND_LINE_FLAG(
+ std::string, body_hex, "",
"If set, contents are converted from hex to ascii, before "
"sending as body of a POST. e.g. --body_hex=\"68656c6c6f\"");
-DEFINE_QUIC_COMMAND_LINE_FLAG(
- std::string,
- headers,
- "",
+DEFINE_QUICHE_COMMAND_LINE_FLAG(
+ std::string, headers, "",
"A semicolon separated list of key:value pairs to "
"add to request headers.");
-DEFINE_QUIC_COMMAND_LINE_FLAG(bool,
- quiet,
- false,
- "Set to true for a quieter output experience.");
+DEFINE_QUICHE_COMMAND_LINE_FLAG(bool, quiet, false,
+ "Set to true for a quieter output experience.");
-DEFINE_QUIC_COMMAND_LINE_FLAG(
- std::string,
- quic_version,
- "",
+DEFINE_QUICHE_COMMAND_LINE_FLAG(
+ std::string, quic_version, "",
"QUIC version to speak, e.g. 21. If not set, then all available "
"versions are offered in the handshake. Also supports wire versions "
"such as Q043 or T099.");
-DEFINE_QUIC_COMMAND_LINE_FLAG(
- std::string,
- connection_options,
- "",
+DEFINE_QUICHE_COMMAND_LINE_FLAG(
+ std::string, connection_options, "",
"Connection options as ASCII tags separated by commas, "
"e.g. \"ABCD,EFGH\"");
-DEFINE_QUIC_COMMAND_LINE_FLAG(
- std::string,
- client_connection_options,
- "",
+DEFINE_QUICHE_COMMAND_LINE_FLAG(
+ std::string, client_connection_options, "",
"Client connection options as ASCII tags separated by commas, "
"e.g. \"ABCD,EFGH\"");
-DEFINE_QUIC_COMMAND_LINE_FLAG(bool,
- quic_ietf_draft,
- false,
- "Use the IETF draft version. This also enables "
- "required internal QUIC flags.");
+DEFINE_QUICHE_COMMAND_LINE_FLAG(bool, quic_ietf_draft, false,
+ "Use the IETF draft version. This also enables "
+ "required internal QUIC flags.");
-DEFINE_QUIC_COMMAND_LINE_FLAG(
- bool,
- version_mismatch_ok,
- false,
+DEFINE_QUICHE_COMMAND_LINE_FLAG(
+ bool, version_mismatch_ok, false,
"If true, a version mismatch in the handshake is not considered a "
"failure. Useful for probing a server to determine if it speaks "
"any version of QUIC.");
-DEFINE_QUIC_COMMAND_LINE_FLAG(
- bool,
- force_version_negotiation,
- false,
+DEFINE_QUICHE_COMMAND_LINE_FLAG(
+ bool, force_version_negotiation, false,
"If true, start by proposing a version that is reserved for version "
"negotiation.");
-DEFINE_QUIC_COMMAND_LINE_FLAG(
- bool,
- multi_packet_chlo,
- false,
+DEFINE_QUICHE_COMMAND_LINE_FLAG(
+ bool, multi_packet_chlo, false,
"If true, add a transport parameter to make the ClientHello span two "
"packets. Only works with QUIC+TLS.");
-DEFINE_QUIC_COMMAND_LINE_FLAG(
- bool,
- redirect_is_success,
- true,
+DEFINE_QUICHE_COMMAND_LINE_FLAG(
+ bool, redirect_is_success, true,
"If true, an HTTP response code of 3xx is considered to be a "
"successful response, otherwise a failure.");
-DEFINE_QUIC_COMMAND_LINE_FLAG(int32_t,
- initial_mtu,
- 0,
- "Initial MTU of the connection.");
+DEFINE_QUICHE_COMMAND_LINE_FLAG(int32_t, initial_mtu, 0,
+ "Initial MTU of the connection.");
-DEFINE_QUIC_COMMAND_LINE_FLAG(
- int32_t,
- num_requests,
- 1,
+DEFINE_QUICHE_COMMAND_LINE_FLAG(
+ int32_t, num_requests, 1,
"How many sequential requests to make on a single connection.");
-DEFINE_QUIC_COMMAND_LINE_FLAG(bool,
- disable_certificate_verification,
- false,
- "If true, don't verify the server certificate.");
+DEFINE_QUICHE_COMMAND_LINE_FLAG(
+ bool, disable_certificate_verification, false,
+ "If true, don't verify the server certificate.");
-DEFINE_QUIC_COMMAND_LINE_FLAG(
+DEFINE_QUICHE_COMMAND_LINE_FLAG(
std::string, default_client_cert, "",
"The path to the file containing PEM-encoded client default certificate to "
"be sent to the server, if server requested client certs.");
-DEFINE_QUIC_COMMAND_LINE_FLAG(
+DEFINE_QUICHE_COMMAND_LINE_FLAG(
std::string, default_client_cert_key, "",
"The path to the file containing PEM-encoded private key of the client's "
"default certificate for signing, if server requested client certs.");
-DEFINE_QUIC_COMMAND_LINE_FLAG(
- bool,
- drop_response_body,
- false,
+DEFINE_QUICHE_COMMAND_LINE_FLAG(
+ bool, drop_response_body, false,
"If true, drop response body immediately after it is received.");
-DEFINE_QUIC_COMMAND_LINE_FLAG(
- bool,
- disable_port_changes,
- false,
+DEFINE_QUICHE_COMMAND_LINE_FLAG(
+ bool, disable_port_changes, false,
"If true, do not change local port after each request.");
-DEFINE_QUIC_COMMAND_LINE_FLAG(bool,
- one_connection_per_request,
- false,
- "If true, close the connection after each "
- "request. This allows testing 0-RTT.");
+DEFINE_QUICHE_COMMAND_LINE_FLAG(bool, one_connection_per_request, false,
+ "If true, close the connection after each "
+ "request. This allows testing 0-RTT.");
-DEFINE_QUIC_COMMAND_LINE_FLAG(int32_t,
- server_connection_id_length,
- -1,
- "Length of the server connection ID used.");
+DEFINE_QUICHE_COMMAND_LINE_FLAG(int32_t, server_connection_id_length, -1,
+ "Length of the server connection ID used.");
-DEFINE_QUIC_COMMAND_LINE_FLAG(int32_t,
- client_connection_id_length,
- -1,
- "Length of the client connection ID used.");
+DEFINE_QUICHE_COMMAND_LINE_FLAG(int32_t, client_connection_id_length, -1,
+ "Length of the client connection ID used.");
-DEFINE_QUIC_COMMAND_LINE_FLAG(int32_t, max_time_before_crypto_handshake_ms,
- 10000,
- "Max time to wait before handshake completes.");
+DEFINE_QUICHE_COMMAND_LINE_FLAG(int32_t, max_time_before_crypto_handshake_ms,
+ 10000,
+ "Max time to wait before handshake completes.");
-DEFINE_QUIC_COMMAND_LINE_FLAG(int32_t, max_inbound_header_list_size, 128 * 1024,
- "Max inbound header list size. 0 means default.");
+DEFINE_QUICHE_COMMAND_LINE_FLAG(
+ int32_t, max_inbound_header_list_size, 128 * 1024,
+ "Max inbound header list size. 0 means default.");
namespace quic {
namespace {
diff --git a/quic/tools/quic_toy_server.cc b/quic/tools/quic_toy_server.cc
index e7b4e1e..cdbe9b3 100644
--- a/quic/tools/quic_toy_server.cc
+++ b/quic/tools/quic_toy_server.cc
@@ -12,44 +12,33 @@
#include "quic/platform/api/quic_flags.h"
#include "quic/platform/api/quic_socket_address.h"
#include "quic/tools/quic_memory_cache_backend.h"
+#include "common/platform/api/quiche_command_line_flags.h"
-DEFINE_QUIC_COMMAND_LINE_FLAG(int32_t,
- port,
- 6121,
- "The port the quic server will listen on.");
+DEFINE_QUICHE_COMMAND_LINE_FLAG(int32_t, port, 6121,
+ "The port the quic server will listen on.");
-DEFINE_QUIC_COMMAND_LINE_FLAG(
- std::string,
- quic_response_cache_dir,
- "",
+DEFINE_QUICHE_COMMAND_LINE_FLAG(
+ std::string, quic_response_cache_dir, "",
"Specifies the directory used during QuicHttpResponseCache "
"construction to seed the cache. Cache directory can be "
"generated using `wget -p --save-headers <url>`");
-DEFINE_QUIC_COMMAND_LINE_FLAG(
- bool,
- generate_dynamic_responses,
- false,
+DEFINE_QUICHE_COMMAND_LINE_FLAG(
+ bool, generate_dynamic_responses, false,
"If true, then URLs which have a numeric path will send a dynamically "
"generated response of that many bytes.");
-DEFINE_QUIC_COMMAND_LINE_FLAG(bool,
- quic_ietf_draft,
- false,
- "Only enable IETF draft versions. This also "
- "enables required internal QUIC flags.");
+DEFINE_QUICHE_COMMAND_LINE_FLAG(bool, quic_ietf_draft, false,
+ "Only enable IETF draft versions. This also "
+ "enables required internal QUIC flags.");
-DEFINE_QUIC_COMMAND_LINE_FLAG(
- std::string,
- quic_versions,
- "",
+DEFINE_QUICHE_COMMAND_LINE_FLAG(
+ std::string, quic_versions, "",
"QUIC versions to enable, e.g. \"h3-25,h3-27\". If not set, then all "
"available versions are enabled.");
-DEFINE_QUIC_COMMAND_LINE_FLAG(bool,
- enable_webtransport,
- false,
- "If true, WebTransport support is enabled.");
+DEFINE_QUICHE_COMMAND_LINE_FLAG(bool, enable_webtransport, false,
+ "If true, WebTransport support is enabled.");
namespace quic {