From 20199cad7e0bdc2419f11aa7c7604215ec9a4f03 Mon Sep 17 00:00:00 2001 From: Esun Kim Date: Wed, 10 Jul 2024 15:21:41 -0700 Subject: [PATCH] Fix C++ 23 unique_ptr issue --- .../load_balancing/health_check_client.cc | 24 +++++----- src/core/server/server.cc | 48 +++++++++---------- src/core/telemetry/metrics.h | 21 ++++---- 3 files changed, 49 insertions(+), 44 deletions(-) diff --git a/src/core/load_balancing/health_check_client.cc b/src/core/load_balancing/health_check_client.cc index 66e1676fe8a..d805ef761eb 100644 --- a/src/core/load_balancing/health_check_client.cc +++ b/src/core/load_balancing/health_check_client.cc @@ -144,18 +144,6 @@ void HealthProducer::HealthChecker::OnConnectivityStateChangeLocked( } } -void HealthProducer::HealthChecker::StartHealthStreamLocked() { - if (GRPC_TRACE_FLAG_ENABLED(health_check_client)) { - LOG(INFO) << "HealthProducer " << producer_.get() << " HealthChecker " - << this << ": creating HealthClient for \"" - << health_check_service_name_ << "\""; - } - stream_client_ = MakeOrphanable( - producer_->connected_subchannel_, producer_->subchannel_->pollset_set(), - std::make_unique(Ref()), - GRPC_TRACE_FLAG_ENABLED(health_check_client) ? "HealthClient" : nullptr); -} - void HealthProducer::HealthChecker::NotifyWatchersLocked( grpc_connectivity_state state, absl::Status status) { if (GRPC_TRACE_FLAG_ENABLED(health_check_client)) { @@ -311,6 +299,18 @@ class HealthProducer::HealthChecker::HealthStreamEventHandler final RefCountedPtr health_checker_; }; +void HealthProducer::HealthChecker::StartHealthStreamLocked() { + if (GRPC_TRACE_FLAG_ENABLED(health_check_client)) { + LOG(INFO) << "HealthProducer " << producer_.get() << " HealthChecker " + << this << ": creating HealthClient for \"" + << health_check_service_name_ << "\""; + } + stream_client_ = MakeOrphanable( + producer_->connected_subchannel_, producer_->subchannel_->pollset_set(), + std::make_unique(Ref()), + GRPC_TRACE_FLAG_ENABLED(health_check_client) ? "HealthClient" : nullptr); +} + // // HealthProducer::ConnectivityWatcher // diff --git a/src/core/server/server.cc b/src/core/server/server.cc index 8e7ce047562..8f08a2c6eeb 100644 --- a/src/core/server/server.cc +++ b/src/core/server/server.cc @@ -87,30 +87,6 @@ namespace grpc_core { -// -// Server::RegisteredMethod -// - -struct Server::RegisteredMethod { - RegisteredMethod( - const char* method_arg, const char* host_arg, - grpc_server_register_method_payload_handling payload_handling_arg, - uint32_t flags_arg) - : method(method_arg == nullptr ? "" : method_arg), - host(host_arg == nullptr ? "" : host_arg), - payload_handling(payload_handling_arg), - flags(flags_arg) {} - - ~RegisteredMethod() = default; - - const std::string method; - const std::string host; - const grpc_server_register_method_payload_handling payload_handling; - const uint32_t flags; - // One request matcher per method. - std::unique_ptr matcher; -}; - // // Server::RequestMatcherInterface // @@ -202,6 +178,30 @@ class Server::RequestMatcherInterface { virtual Server* server() const = 0; }; +// +// Server::RegisteredMethod +// + +struct Server::RegisteredMethod { + RegisteredMethod( + const char* method_arg, const char* host_arg, + grpc_server_register_method_payload_handling payload_handling_arg, + uint32_t flags_arg) + : method(method_arg == nullptr ? "" : method_arg), + host(host_arg == nullptr ? "" : host_arg), + payload_handling(payload_handling_arg), + flags(flags_arg) {} + + ~RegisteredMethod() = default; + + const std::string method; + const std::string host; + const grpc_server_register_method_payload_handling payload_handling; + const uint32_t flags; + // One request matcher per method. + std::unique_ptr matcher; +}; + // // Server::RequestedCall // diff --git a/src/core/telemetry/metrics.h b/src/core/telemetry/metrics.h index 40db0350bf2..589aa7964ec 100644 --- a/src/core/telemetry/metrics.h +++ b/src/core/telemetry/metrics.h @@ -461,14 +461,7 @@ class GlobalStatsPluginRegistry { template GRPC_MUST_USE_RESULT std::unique_ptr RegisterCallback(absl::AnyInvocable callback, - Duration min_interval, Args... args) { - AssertIsCallbackGaugeHandle(args...); - return std::make_unique( - *this, std::move(callback), - std::vector{ - args...}, - min_interval); - } + Duration min_interval, Args... args); // Adds all available client call tracers associated with the stats plugins // within the group to \a call_context. @@ -557,6 +550,18 @@ class RegisteredMetricCallback { Duration min_interval_; }; +template +inline std::unique_ptr +GlobalStatsPluginRegistry::StatsPluginGroup::RegisterCallback( + absl::AnyInvocable callback, + Duration min_interval, Args... args) { + AssertIsCallbackGaugeHandle(args...); + return std::make_unique( + *this, std::move(callback), + std::vector{args...}, + min_interval); +} + } // namespace grpc_core #endif // GRPC_SRC_CORE_TELEMETRY_METRICS_H