diff options
author | heretic <heretic@yandex-team.ru> | 2022-03-25 12:34:53 +0300 |
---|---|---|
committer | heretic <heretic@yandex-team.ru> | 2022-03-25 12:34:53 +0300 |
commit | a41f3739eed6fceb6f62056a7620d220958a47e7 (patch) | |
tree | 278103258b510cb4a96761ea79d6ccd397ca05a0 /contrib/libs/grpc/src/cpp/server/server_builder.cc | |
parent | 73d3613a82e5c217fcbe0ab8bbf8120c1ed1af55 (diff) | |
download | ydb-a41f3739eed6fceb6f62056a7620d220958a47e7.tar.gz |
Update grpc to 1.43.2 DTCC-864
ref:50a492c335cda70f458797cf945e49fe739c2715
Diffstat (limited to 'contrib/libs/grpc/src/cpp/server/server_builder.cc')
-rw-r--r-- | contrib/libs/grpc/src/cpp/server/server_builder.cc | 63 |
1 files changed, 30 insertions, 33 deletions
diff --git a/contrib/libs/grpc/src/cpp/server/server_builder.cc b/contrib/libs/grpc/src/cpp/server/server_builder.cc index 502d4f20ae6..abe95fd8343 100644 --- a/contrib/libs/grpc/src/cpp/server/server_builder.cc +++ b/contrib/libs/grpc/src/cpp/server/server_builder.cc @@ -16,15 +16,14 @@ * */ -#include <grpcpp/server_builder.h> +#include <utility> #include <grpc/support/cpu.h> #include <grpc/support/log.h> #include <grpcpp/impl/service_type.h> #include <grpcpp/resource_quota.h> #include <grpcpp/server.h> - -#include <utility> +#include <grpcpp/server_builder.h> #include "src/core/lib/channel/channel_args.h" #include "src/core/lib/gpr/string.h" @@ -102,38 +101,23 @@ ServerBuilder& ServerBuilder::RegisterAsyncGenericService( return *this; } -#ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL ServerBuilder& ServerBuilder::RegisterCallbackGenericService( CallbackGenericService* service) { if (generic_service_ || callback_generic_service_) { gpr_log(GPR_ERROR, "Adding multiple generic services is unsupported for now. " "Dropping the service %p", - (void*)service); + service); } else { callback_generic_service_ = service; } return *this; } -#else -ServerBuilder& ServerBuilder::experimental_type::RegisterCallbackGenericService( - experimental::CallbackGenericService* service) { - if (builder_->generic_service_ || builder_->callback_generic_service_) { - gpr_log(GPR_ERROR, - "Adding multiple generic services is unsupported for now. " - "Dropping the service %p", - service); - } else { - builder_->callback_generic_service_ = service; - } - return *builder_; -} -#endif -ServerBuilder& ServerBuilder::experimental_type::SetContextAllocator( +ServerBuilder& ServerBuilder::SetContextAllocator( std::unique_ptr<grpc::ContextAllocator> context_allocator) { - builder_->context_allocator_ = std::move(context_allocator); - return *builder_; + context_allocator_ = std::move(context_allocator); + return *this; } std::unique_ptr<grpc::experimental::ExternalConnectionAcceptor> @@ -149,6 +133,12 @@ ServerBuilder::experimental_type::AddExternalConnectionAcceptor( return builder_->acceptors_.back()->GetAcceptor(); } +void ServerBuilder::experimental_type::SetAuthorizationPolicyProvider( + std::shared_ptr<experimental::AuthorizationPolicyProviderInterface> + provider) { + builder_->authorization_provider_ = std::move(provider); +} + ServerBuilder& ServerBuilder::SetOption( std::unique_ptr<ServerBuilderOption> option) { options_.push_back(std::move(option)); @@ -177,9 +167,9 @@ ServerBuilder& ServerBuilder::SetSyncServerOption( ServerBuilder& ServerBuilder::SetCompressionAlgorithmSupportStatus( grpc_compression_algorithm algorithm, bool enabled) { if (enabled) { - GPR_BITSET(&enabled_compression_algorithms_bitset_, algorithm); + grpc_core::SetBit(&enabled_compression_algorithms_bitset_, algorithm); } else { - GPR_BITCLEAR(&enabled_compression_algorithms_bitset_, algorithm); + grpc_core::ClearBit(&enabled_compression_algorithms_bitset_, algorithm); } return *this; } @@ -223,8 +213,8 @@ ServerBuilder& ServerBuilder::AddListeningPort( return *this; } -std::unique_ptr<grpc::Server> ServerBuilder::BuildAndStart() { - grpc::ChannelArguments args; +ChannelArguments ServerBuilder::BuildChannelArgs() { + ChannelArguments args; if (max_receive_message_size_ >= -1) { args.SetInt(GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH, max_receive_message_size_); } @@ -245,16 +235,24 @@ std::unique_ptr<grpc::Server> ServerBuilder::BuildAndStart() { args.SetInt(GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM, maybe_default_compression_algorithm_.algorithm); } - if (resource_quota_ != nullptr) { args.SetPointerWithVtable(GRPC_ARG_RESOURCE_QUOTA, resource_quota_, grpc_resource_quota_arg_vtable()); } - for (const auto& plugin : plugins_) { plugin->UpdateServerBuilder(this); plugin->UpdateChannelArguments(&args); } + if (authorization_provider_ != nullptr) { + args.SetPointerWithVtable(GRPC_ARG_AUTHORIZATION_POLICY_PROVIDER, + authorization_provider_->c_provider(), + grpc_authorization_policy_provider_arg_vtable()); + } + return args; +} + +std::unique_ptr<grpc::Server> ServerBuilder::BuildAndStart() { + ChannelArguments args = BuildChannelArgs(); // == Determine if the server has any syncrhonous methods == bool has_sync_methods = false; @@ -304,6 +302,10 @@ std::unique_ptr<grpc::Server> ServerBuilder::BuildAndStart() { } } + if (callback_generic_service_ != nullptr) { + has_frequently_polled_cqs = true; + } + const bool is_hybrid_server = has_sync_methods && has_frequently_polled_cqs; if (has_sync_methods) { @@ -375,12 +377,7 @@ std::unique_ptr<grpc::Server> ServerBuilder::BuildAndStart() { return nullptr; } -#ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL server->RegisterContextAllocator(std::move(context_allocator_)); -#else - server->experimental_registration()->RegisterContextAllocator( - std::move(context_allocator_)); -#endif for (const auto& value : services_) { if (!server->RegisterService(value->host.get(), value->service)) { |