summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp18
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_cas_client.hpp10
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_network_reader.cpp9
3 files changed, 18 insertions, 19 deletions
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp b/src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp
index 818222db..47029bba 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp
@@ -187,19 +187,19 @@ BazelCasClient::BazelCasClient(
auto BazelCasClient::BatchReadBlobs(
std::string const& instance_name,
- std::vector<bazel_re::Digest>::const_iterator const& begin,
- std::vector<bazel_re::Digest>::const_iterator const& end) const noexcept
- -> std::vector<BazelBlob> {
- if (begin == end) {
- return {};
+ std::unordered_set<bazel_re::Digest> const& blobs) const noexcept
+ -> std::unordered_set<BazelBlob> {
+ std::unordered_set<BazelBlob> result;
+ if (blobs.empty()) {
+ return result;
}
- std::vector<BazelBlob> result{};
try {
+ result.reserve(blobs.size());
auto requests =
CreateBatchRequestsMaxSize<bazel_re::BatchReadBlobsRequest>(
instance_name,
- begin,
- end,
+ blobs.begin(),
+ blobs.end(),
"BatchReadBlobs",
[](bazel_re::BatchReadBlobsRequest* request,
bazel_re::Digest const& x) {
@@ -224,7 +224,7 @@ auto BazelCasClient::BatchReadBlobs(
if (batch_response.ok) {
std::move(batch_response.result.begin(),
batch_response.result.end(),
- std::back_inserter(result));
+ std::inserter(result, result.end()));
return {.ok = true};
}
return {.ok = false,
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_cas_client.hpp b/src/buildtool/execution_api/remote/bazel/bazel_cas_client.hpp
index 5afa38dd..f3351c8a 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_cas_client.hpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_cas_client.hpp
@@ -68,14 +68,12 @@ class BazelCasClient {
/// \brief Read multiple blobs in batch transfer
/// \param[in] instance_name Name of the CAS instance
- /// \param[in] begin Start of the blob digests to read
- /// \param[in] end End of the blob digests to read
- /// \returns The blobs sucessfully read
+ /// \param[in] blobs Blob digests to read
+ /// \returns The blobs successfully read
[[nodiscard]] auto BatchReadBlobs(
std::string const& instance_name,
- std::vector<bazel_re::Digest>::const_iterator const& begin,
- std::vector<bazel_re::Digest>::const_iterator const& end) const noexcept
- -> std::vector<BazelBlob>;
+ std::unordered_set<bazel_re::Digest> const& blobs) const noexcept
+ -> std::unordered_set<BazelBlob>;
[[nodiscard]] auto GetTree(std::string const& instance_name,
bazel_re::Digest const& root_digest,
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_network_reader.cpp b/src/buildtool/execution_api/remote/bazel/bazel_network_reader.cpp
index d57991b6..0ab00dd6 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_network_reader.cpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_network_reader.cpp
@@ -17,6 +17,7 @@
#include <algorithm>
#include <filesystem>
#include <memory>
+#include <unordered_set>
#include <utility>
#include "src/buildtool/common/artifact_digest_factory.hpp"
@@ -203,15 +204,15 @@ auto BazelNetworkReader::BatchReadBlobs(
std::vector<ArtifactDigest> const& digests) const noexcept
-> std::vector<ArtifactBlob> {
// Convert artifacts to bazel digests:
- std::vector<bazel_re::Digest> bazel_digests;
+ std::unordered_set<bazel_re::Digest> bazel_digests;
bazel_digests.reserve(digests.size());
for (ArtifactDigest const& digest : digests) {
- bazel_digests.push_back(ArtifactDigestFactory::ToBazel(digest));
+ bazel_digests.emplace(ArtifactDigestFactory::ToBazel(digest));
}
// Batch blobs:
- std::vector<BazelBlob> bazel_blobs = cas_.BatchReadBlobs(
- instance_name_, bazel_digests.begin(), bazel_digests.end());
+ std::unordered_set<BazelBlob> bazel_blobs =
+ cas_.BatchReadBlobs(instance_name_, bazel_digests);
// Map digests to blobs for further lookup:
auto const back_map = BackMap<bazel_re::Digest, BazelBlob>::Make(