summaryrefslogtreecommitdiff
path: root/src/buildtool/execution_api/remote/bazel/bazel_api.cpp
diff options
context:
space:
mode:
authorSascha Roloff <sascha.roloff@huawei.com>2022-07-08 10:04:34 +0200
committerSascha Roloff <sascha.roloff@huawei.com>2022-08-05 14:41:31 +0200
commitbb2375008f69bf62d510ce862f1d4370fa130ef3 (patch)
treeaa757c0eec0455782cb764ce09c46adc8ef250cf /src/buildtool/execution_api/remote/bazel/bazel_api.cpp
parent30c5aa0b3dc37c784311a905f120e0e8b1f651fd (diff)
downloadjustbuild-bb2375008f69bf62d510ce862f1d4370fa130ef3.tar.gz
Introduced batch availability check for remote execution api
Diffstat (limited to 'src/buildtool/execution_api/remote/bazel/bazel_api.cpp')
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_api.cpp22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp
index ca5d4946..51e85176 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp
@@ -170,7 +170,7 @@ auto BazelApi::CreateAction(
return std::nullopt;
}
if (tree_map_->AddTree(*digest, std::move(tree))) {
- return ArtifactDigest{std::move(*digest)};
+ return ArtifactDigest{*digest};
}
return std::nullopt;
}
@@ -179,3 +179,23 @@ auto BazelApi::CreateAction(
ArtifactDigest const& digest) const noexcept -> bool {
return network_->IsAvailable(digest);
}
+
+[[nodiscard]] auto BazelApi::IsAvailable(
+ std::vector<ArtifactDigest> const& digests) const noexcept
+ -> std::vector<ArtifactDigest> {
+ std::vector<bazel_re::Digest> bazel_digests;
+ bazel_digests.reserve(digests.size());
+ std::transform(digests.begin(),
+ digests.end(),
+ std::back_inserter(bazel_digests),
+ [](ArtifactDigest const& digest) { return digest; });
+ auto bazel_result = network_->IsAvailable(bazel_digests);
+ std::vector<ArtifactDigest> result;
+ result.reserve(bazel_result.size());
+ std::transform(
+ bazel_result.begin(),
+ bazel_result.end(),
+ std::back_inserter(result),
+ [](bazel_re::Digest& digest) { return ArtifactDigest{digest}; });
+ return result;
+}