From ecc2bbac3bfd81950d4ea6fce4b7b7003abfd3c1 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Tue, 2 Jan 2024 10:02:03 -0800 Subject: [PATCH] [call-v3] Move `XdsResolver::ClusterSelectionFilter` to v3 api (#35419) Omit experiments due to trivial refactor Closes #35419 COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/35419 from ctiller:xds1 4c639752a03d75d31262ab05ae630afc07cb1cbc PiperOrigin-RevId: 595144625 --- .../resolver/xds/xds_resolver.cc | 30 ++++++++++++++----- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc b/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc index 732f07169bc..9cc094f0499 100644 --- a/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +++ b/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc @@ -312,7 +312,8 @@ class XdsResolver : public Resolver { RouteConfigData::RouteEntry* route_; }; - class ClusterSelectionFilter : public ChannelFilter { + class ClusterSelectionFilter + : public ImplementChannelFilter { public: const static grpc_channel_filter kFilter; @@ -322,8 +323,15 @@ class XdsResolver : public Resolver { } // Construct a promise for one call. - ArenaPromise MakeCallPromise( - CallArgs call_args, NextPromiseFactory next_promise_factory) override; + class Call { + public: + void OnClientInitialMetadata(ClientMetadata& md); + static const NoInterceptor OnServerInitialMetadata; + static const NoInterceptor OnServerTrailingMetadata; + static const NoInterceptor OnClientToServerMessage; + static const NoInterceptor OnServerToClientMessage; + static const NoInterceptor OnFinalize; + }; private: explicit ClusterSelectionFilter(ChannelFilter::Args filter_args) @@ -374,6 +382,16 @@ class XdsResolver : public Resolver { std::map> cluster_ref_map_; }; +const NoInterceptor + XdsResolver::ClusterSelectionFilter::Call::OnServerInitialMetadata; +const NoInterceptor + XdsResolver::ClusterSelectionFilter::Call::OnServerTrailingMetadata; +const NoInterceptor + XdsResolver::ClusterSelectionFilter::Call::OnClientToServerMessage; +const NoInterceptor + XdsResolver::ClusterSelectionFilter::Call::OnServerToClientMessage; +const NoInterceptor XdsResolver::ClusterSelectionFilter::Call::OnFinalize; + // // XdsResolver::RouteConfigData::RouteListIterator // @@ -835,9 +853,8 @@ const grpc_channel_filter XdsResolver::ClusterSelectionFilter::kFilter = kFilterExaminesServerInitialMetadata>( "cluster_selection_filter"); -ArenaPromise -XdsResolver::ClusterSelectionFilter::MakeCallPromise( - CallArgs call_args, NextPromiseFactory next_promise_factory) { +void XdsResolver::ClusterSelectionFilter::Call::OnClientInitialMetadata( + ClientMetadata&) { auto* service_config_call_data = static_cast( GetContext() @@ -856,7 +873,6 @@ XdsResolver::ClusterSelectionFilter::MakeCallPromise( [cluster = std::move(cluster)]() mutable { cluster.reset(); }); } } - return next_promise_factory(std::move(call_args)); } //