diff options
author | Bulat <[email protected]> | 2025-10-14 23:02:21 +0300 |
---|---|---|
committer | GitHub <[email protected]> | 2025-10-14 23:02:21 +0300 |
commit | 834977fc44faac0d4668f39ffec80dcbbc74fbaf (patch) | |
tree | 294a120acea4d0ff54dbabc7e7a13794042d0d9a | |
parent | 1673452ff26d6cabc2d83794711c431a43d8624a (diff) |
[C++ SDK] Replaced function pointers to lambdas in IAM cred provider (#26860)
-rw-r--r-- | ydb/public/sdk/cpp/include/ydb-cpp-sdk/client/iam/common/generic_provider.h | 12 | ||||
-rw-r--r-- | ydb/public/sdk/cpp/src/client/iam_private/common/iam.h | 4 |
2 files changed, 11 insertions, 5 deletions
diff --git a/ydb/public/sdk/cpp/include/ydb-cpp-sdk/client/iam/common/generic_provider.h b/ydb/public/sdk/cpp/include/ydb-cpp-sdk/client/iam/common/generic_provider.h index 9ea0ead0126..7bef7f8e1b8 100644 --- a/ydb/public/sdk/cpp/include/ydb-cpp-sdk/client/iam/common/generic_provider.h +++ b/ydb/public/sdk/cpp/include/ydb-cpp-sdk/client/iam/common/generic_provider.h @@ -24,7 +24,7 @@ class TGrpcIamCredentialsProvider : public ICredentialsProvider { protected: using TRequestFiller = std::function<void(TRequest&)>; using TAsyncInterface = typename TService::Stub::async_interface; - using TAsyncRpc = void (TAsyncInterface::*)(grpc::ClientContext*, const TRequest*, TResponse*, std::function<void(grpc::Status)>); + using TAsyncRpc = std::function<void(typename TService::Stub*, grpc::ClientContext*, const TRequest*, TResponse*, std::function<void(grpc::Status)>)>; private: class TImpl : public std::enable_shared_from_this<TGrpcIamCredentialsProvider<TRequest, TResponse, TService>::TImpl> { @@ -96,7 +96,7 @@ private: context->AddMetadata("authorization", "Bearer " + AuthTokenProvider_->GetAuthInfo()); } - (Stub_->async()->*Rpc_)(context.get(), &req, response.get(), std::move(cb)); + Rpc_(Stub_.get(), context.get(), &req, response.get(), std::move(cb)); if (sync) { resultPromise.GetFuture().Wait(2 * IamEndpoint_.RequestTimeout); @@ -217,7 +217,9 @@ public: : TGrpcIamCredentialsProvider<TRequest, TResponse, TService>(params, [jwtParams = params.JwtParams](TRequest& req) { req.set_jwt(MakeSignedJwt(jwtParams)); - }, &TService::Stub::async_interface::Create) {} + }, [](typename TService::Stub* stub, grpc::ClientContext* context, const TRequest* request, TResponse* response, std::function<void(grpc::Status)> cb) { + stub->async()->Create(context, request, response, std::move(cb)); + }) {} }; template<typename TRequest, typename TResponse, typename TService> @@ -227,7 +229,9 @@ public: : TGrpcIamCredentialsProvider<TRequest, TResponse, TService>(params, [token = params.OAuthToken](TRequest& req) { req.set_yandex_passport_oauth_token(TStringType{token}); - }, &TService::Stub::async_interface::Create) {} + }, [](typename TService::Stub* stub, grpc::ClientContext* context, const TRequest* request, TResponse* response, std::function<void(grpc::Status)> cb) { + stub->async()->Create(context, request, response, std::move(cb)); + }) {} }; template<typename TRequest, typename TResponse, typename TService> diff --git a/ydb/public/sdk/cpp/src/client/iam_private/common/iam.h b/ydb/public/sdk/cpp/src/client/iam_private/common/iam.h index 4a8ed691c30..e22b321fcf9 100644 --- a/ydb/public/sdk/cpp/src/client/iam_private/common/iam.h +++ b/ydb/public/sdk/cpp/src/client/iam_private/common/iam.h @@ -18,7 +18,9 @@ private: req.set_resource_type(params.ResourceType); req.set_target_service_account_id(params.TargetServiceAccountId); }, - &TService::Stub::async_interface::CreateForService, + [](typename TService::Stub* stub, grpc::ClientContext* context, const TRequest* request, TResponse* response, std::function<void(grpc::Status)> cb) { + stub->async()->CreateForService(context, request, response, std::move(cb)); + }, params.SystemServiceAccountCredentials->CreateProvider()) {} }; |