[call-v3] Convert ClientAuthorityFilter (#35469)
Closes #35469
COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/35469 from ctiller:caf 1dffe24fcb
PiperOrigin-RevId: 597040037
This commit is contained in:
parent
3f8af9a74c
commit
4105425da5
|
|
@ -37,6 +37,12 @@
|
|||
|
||||
namespace grpc_core {
|
||||
|
||||
const NoInterceptor ClientAuthorityFilter::Call::OnServerInitialMetadata;
|
||||
const NoInterceptor ClientAuthorityFilter::Call::OnServerTrailingMetadata;
|
||||
const NoInterceptor ClientAuthorityFilter::Call::OnClientToServerMessage;
|
||||
const NoInterceptor ClientAuthorityFilter::Call::OnServerToClientMessage;
|
||||
const NoInterceptor ClientAuthorityFilter::Call::OnFinalize;
|
||||
|
||||
absl::StatusOr<ClientAuthorityFilter> ClientAuthorityFilter::Create(
|
||||
const ChannelArgs& args, ChannelFilter::Args) {
|
||||
absl::optional<absl::string_view> default_authority =
|
||||
|
|
@ -49,17 +55,12 @@ absl::StatusOr<ClientAuthorityFilter> ClientAuthorityFilter::Create(
|
|||
return ClientAuthorityFilter(Slice::FromCopiedString(*default_authority));
|
||||
}
|
||||
|
||||
ArenaPromise<ServerMetadataHandle> ClientAuthorityFilter::MakeCallPromise(
|
||||
CallArgs call_args, NextPromiseFactory next_promise_factory) {
|
||||
void ClientAuthorityFilter::Call::OnClientInitialMetadata(
|
||||
ClientMetadata& md, ClientAuthorityFilter* filter) {
|
||||
// If no authority is set, set the default authority.
|
||||
if (call_args.client_initial_metadata->get_pointer(HttpAuthorityMetadata()) ==
|
||||
nullptr) {
|
||||
call_args.client_initial_metadata->Set(HttpAuthorityMetadata(),
|
||||
default_authority_.Ref());
|
||||
if (md.get_pointer(HttpAuthorityMetadata()) == nullptr) {
|
||||
md.Set(HttpAuthorityMetadata(), filter->default_authority_.Ref());
|
||||
}
|
||||
// We have no asynchronous work, so we can just ask the next promise to run,
|
||||
// passing down initial_metadata.
|
||||
return next_promise_factory(std::move(call_args));
|
||||
}
|
||||
|
||||
const grpc_channel_filter ClientAuthorityFilter::kFilter =
|
||||
|
|
|
|||
|
|
@ -34,16 +34,24 @@
|
|||
|
||||
namespace grpc_core {
|
||||
|
||||
class ClientAuthorityFilter final : public ChannelFilter {
|
||||
class ClientAuthorityFilter final
|
||||
: public ImplementChannelFilter<ClientAuthorityFilter> {
|
||||
public:
|
||||
static const grpc_channel_filter kFilter;
|
||||
|
||||
static absl::StatusOr<ClientAuthorityFilter> Create(const ChannelArgs& args,
|
||||
ChannelFilter::Args);
|
||||
|
||||
// Construct a promise for one call.
|
||||
ArenaPromise<ServerMetadataHandle> MakeCallPromise(
|
||||
CallArgs call_args, NextPromiseFactory next_promise_factory) override;
|
||||
class Call {
|
||||
public:
|
||||
void OnClientInitialMetadata(ClientMetadata& md,
|
||||
ClientAuthorityFilter* filter);
|
||||
static const NoInterceptor OnServerInitialMetadata;
|
||||
static const NoInterceptor OnServerTrailingMetadata;
|
||||
static const NoInterceptor OnClientToServerMessage;
|
||||
static const NoInterceptor OnServerToClientMessage;
|
||||
static const NoInterceptor OnFinalize;
|
||||
};
|
||||
|
||||
private:
|
||||
explicit ClientAuthorityFilter(Slice default_authority)
|
||||
|
|
|
|||
Loading…
Reference in New Issue