diff --git a/bazel/external/quiche.BUILD b/bazel/external/quiche.BUILD index 0563a6edfea37..b287afa1dc695 100644 --- a/bazel/external/quiche.BUILD +++ b/bazel/external/quiche.BUILD @@ -26,6 +26,10 @@ licenses(["notice"]) # Apache 2 # should remain largely the same. load(":genrule_cmd.bzl", "genrule_cmd") +load( + "@envoy//bazel:envoy_build_system.bzl", + "envoy_cc_test", +) src_files = glob([ "**/*.h", @@ -118,9 +122,11 @@ cc_library( "quiche/quic/platform/api/quic_flag_utils.h", "quiche/quic/platform/api/quic_iovec.h", "quiche/quic/platform/api/quic_prefetch.h", + "quiche/quic/platform/api/quic_ptr_util.h", + "quiche/quic/platform/api/quic_str_cat.h", "quiche/quic/platform/api/quic_string.h", "quiche/quic/platform/api/quic_string_piece.h", - "quiche/quic/platform/api/quic_ptr_util.h", + "quiche/quic/platform/api/quic_string_utils.h", "quiche/quic/platform/api/quic_uint128.h", # TODO: uncomment the following files as implementations are added. # "quiche/quic/platform/api/quic_bug_tracker.h", @@ -150,8 +156,6 @@ cc_library( # "quiche/quic/platform/api/quic_sleep.h", # "quiche/quic/platform/api/quic_socket_address.h", # "quiche/quic/platform/api/quic_stack_trace.h", - # "quiche/quic/platform/api/quic_str_cat.h", - # "quiche/quic/platform/api/quic_string_utils.h", # "quiche/quic/platform/api/quic_test.h", # "quiche/quic/platform/api/quic_test_loopback.h", # "quiche/quic/platform/api/quic_test_mem_slice_vector.h", @@ -164,3 +168,12 @@ cc_library( "@envoy//source/extensions/quic_listeners/quiche/platform:quic_platform_base_impl_lib", ], ) + +envoy_cc_test( + name = "quic_platform_test", + srcs = ["quiche/quic/platform/api/quic_string_utils_test.cc"], + repository = "@envoy", + deps = [ + ":quic_platform", + ], +) diff --git a/source/extensions/quic_listeners/quiche/platform/BUILD b/source/extensions/quic_listeners/quiche/platform/BUILD index 12d7fd4fb1e3a..8687dd1cb0b6f 100644 --- a/source/extensions/quic_listeners/quiche/platform/BUILD +++ b/source/extensions/quic_listeners/quiche/platform/BUILD @@ -70,6 +70,8 @@ envoy_cc_library( name = "quic_platform_impl_lib", hdrs = [ "quic_mutex_impl.h", + "quic_str_cat_impl.h", + "quic_string_utils_impl.h", ], external_deps = [ "quiche_quic_platform_base", diff --git a/source/extensions/quic_listeners/quiche/platform/quic_str_cat_impl.h b/source/extensions/quic_listeners/quiche/platform/quic_str_cat_impl.h new file mode 100644 index 0000000000000..f689f40a6204a --- /dev/null +++ b/source/extensions/quic_listeners/quiche/platform/quic_str_cat_impl.h @@ -0,0 +1,23 @@ +#pragma once + +#include "absl/strings/str_cat.h" +#include "fmt/printf.h" +#include "quiche/quic/platform/api/quic_string.h" + +// NOLINT(namespace-envoy) + +// This file is part of the QUICHE platform implementation, and is not to be +// consumed or referenced directly by other Envoy code. It serves purely as a +// porting layer for QUICHE. + +namespace quic { + +template inline QuicString QuicStrCatImpl(const Args&... args) { + return absl::StrCat(args...); +} + +template inline QuicString QuicStringPrintfImpl(const Args&... args) { + return fmt::sprintf(std::forward(args)...); +} + +} // namespace quic diff --git a/source/extensions/quic_listeners/quiche/platform/quic_string_utils_impl.h b/source/extensions/quic_listeners/quiche/platform/quic_string_utils_impl.h new file mode 100644 index 0000000000000..b3ab8277df196 --- /dev/null +++ b/source/extensions/quic_listeners/quiche/platform/quic_string_utils_impl.h @@ -0,0 +1,18 @@ +#pragma once + +#include "absl/strings/str_cat.h" +#include "quiche/quic/platform/api/quic_string.h" + +// NOLINT(namespace-envoy) + +// This file is part of the QUICHE platform implementation, and is not to be +// consumed or referenced directly by other Envoy code. It serves purely as a +// porting layer for QUICHE. + +namespace quic { + +template inline void QuicStrAppendImpl(QuicString* output, const Args&... args) { + absl::StrAppend(output, args...); +} + +} // namespace quic