summaryrefslogtreecommitdiffstats
path: root/contrib/libs/grpc/src/cpp/client/create_channel.cc
diff options
context:
space:
mode:
authorDevtools Arcadia <[email protected]>2022-02-07 18:08:42 +0300
committerDevtools Arcadia <[email protected]>2022-02-07 18:08:42 +0300
commit1110808a9d39d4b808aef724c861a2e1a38d2a69 (patch)
treee26c9fed0de5d9873cce7e00bc214573dc2195b7 /contrib/libs/grpc/src/cpp/client/create_channel.cc
intermediate changes
ref:cde9a383711a11544ce7e107a78147fb96cc4029
Diffstat (limited to 'contrib/libs/grpc/src/cpp/client/create_channel.cc')
-rw-r--r--contrib/libs/grpc/src/cpp/client/create_channel.cc85
1 files changed, 85 insertions, 0 deletions
diff --git a/contrib/libs/grpc/src/cpp/client/create_channel.cc b/contrib/libs/grpc/src/cpp/client/create_channel.cc
new file mode 100644
index 00000000000..97327490ed2
--- /dev/null
+++ b/contrib/libs/grpc/src/cpp/client/create_channel.cc
@@ -0,0 +1,85 @@
+/*
+ *
+ * Copyright 2015 gRPC authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <memory>
+
+#include <grpcpp/channel.h>
+#include <grpcpp/create_channel.h>
+#include <grpcpp/impl/grpc_library.h>
+#include <grpcpp/security/credentials.h>
+#include <grpcpp/support/channel_arguments.h>
+
+#include "src/cpp/client/create_channel_internal.h"
+
+namespace grpc {
+std::shared_ptr<grpc::Channel> CreateChannel(
+ const grpc::string& target,
+ const std::shared_ptr<grpc::ChannelCredentials>& creds) {
+ return CreateCustomChannel(target, creds, grpc::ChannelArguments());
+}
+
+std::shared_ptr<grpc::Channel> CreateCustomChannel(
+ const grpc::string& target,
+ const std::shared_ptr<grpc::ChannelCredentials>& creds,
+ const grpc::ChannelArguments& args) {
+ grpc::GrpcLibraryCodegen
+ init_lib; // We need to call init in case of bad creds.
+ return creds ? creds->CreateChannelImpl(target, args)
+ : grpc::CreateChannelInternal(
+ "",
+ grpc_lame_client_channel_create(
+ nullptr, GRPC_STATUS_INVALID_ARGUMENT,
+ "Invalid credentials."),
+ std::vector<std::unique_ptr<
+ grpc::experimental::
+ ClientInterceptorFactoryInterface>>());
+}
+
+namespace experimental {
+/// Create a new \em custom \a Channel pointing to \a target with \a
+/// interceptors being invoked per call.
+///
+/// \warning For advanced use and testing ONLY. Override default channel
+/// arguments only if necessary.
+///
+/// \param target The URI of the endpoint to connect to.
+/// \param creds Credentials to use for the created channel. If it does not
+/// hold an object or is invalid, a lame channel (one on which all operations
+/// fail) is returned.
+/// \param args Options for channel creation.
+std::shared_ptr<grpc::Channel> CreateCustomChannelWithInterceptors(
+ const TString& target,
+ const std::shared_ptr<grpc::ChannelCredentials>& creds,
+ const grpc::ChannelArguments& args,
+ std::vector<
+ std::unique_ptr<grpc::experimental::ClientInterceptorFactoryInterface>>
+ interceptor_creators) {
+ grpc::GrpcLibraryCodegen
+ init_lib; // We need to call init in case of bad creds.
+ return creds ? creds->CreateChannelWithInterceptors(
+ target, args, std::move(interceptor_creators))
+ : grpc::CreateChannelInternal(
+ "",
+ grpc_lame_client_channel_create(
+ nullptr, GRPC_STATUS_INVALID_ARGUMENT,
+ "Invalid credentials."),
+ std::move(interceptor_creators));
+}
+} // namespace experimental
+
+} // namespace grpc