summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBulat <[email protected]>2025-10-14 23:02:21 +0300
committerGitHub <[email protected]>2025-10-14 23:02:21 +0300
commit834977fc44faac0d4668f39ffec80dcbbc74fbaf (patch)
tree294a120acea4d0ff54dbabc7e7a13794042d0d9a
parent1673452ff26d6cabc2d83794711c431a43d8624a (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.h12
-rw-r--r--ydb/public/sdk/cpp/src/client/iam_private/common/iam.h4
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()) {}
};