summaryrefslogtreecommitdiff
path: root/src/buildtool/execution_api/remote/bazel
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildtool/execution_api/remote/bazel')
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_api.cpp20
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_network_reader.cpp23
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_network_reader.hpp7
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_response.cpp2
4 files changed, 35 insertions, 17 deletions
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp
index 2f54a377..b76c3877 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp
@@ -52,7 +52,7 @@
namespace {
[[nodiscard]] auto RetrieveToCas(
- std::vector<bazel_re::Digest> const& digests,
+ std::vector<ArtifactDigest> const& digests,
IExecutionApi const& api,
std::shared_ptr<BazelNetwork> const& network,
std::unordered_map<ArtifactDigest, Artifact::ObjectInfo> const&
@@ -121,16 +121,8 @@ namespace {
std::vector<ArtifactDigest>{digest_set.begin(), digest_set.end()};
auto missing_artifact_digests = other_api.IsAvailable(unique_digests);
-
- auto missing_digests = std::vector<bazel_re::Digest>{};
- missing_digests.reserve(digest_set.size());
- std::transform(missing_artifact_digests.begin(),
- missing_artifact_digests.end(),
- std::back_inserter(missing_digests),
- [](auto const& digest) {
- return static_cast<bazel_re::Digest>(digest);
- });
- if (not ::RetrieveToCas(missing_digests, other_api, network, info_map)) {
+ if (not ::RetrieveToCas(
+ missing_artifact_digests, other_api, network, info_map)) {
return false;
}
@@ -241,7 +233,7 @@ auto BazelApi::CreateAction(
}
// Obtain file digests from artifact infos
- std::vector<bazel_re::Digest> file_digests{};
+ std::vector<ArtifactDigest> file_digests{};
std::vector<std::size_t> artifact_pos{};
for (std::size_t i{}; i < artifacts_info.size(); ++i) {
auto const& info = artifacts_info[i];
@@ -276,7 +268,7 @@ auto BazelApi::CreateAction(
auto size = file_digests.size();
auto reader = network_->CreateReader();
std::size_t count{};
- for (auto blobs : reader.ReadIncrementally(std::move(file_digests))) {
+ for (auto blobs : reader.ReadIncrementally(file_digests)) {
if (count + blobs.size() > size) {
Logger::Log(LogLevel::Warning,
"received more blobs than requested.");
@@ -344,7 +336,7 @@ auto BazelApi::CreateAction(
}
// Recursively process trees.
- std::vector<bazel_re::Digest> blob_digests{};
+ std::vector<ArtifactDigest> blob_digests{};
for (auto const& dgst : missing_artifacts_info->digests) {
auto const& info = missing_artifacts_info->back_map[dgst];
if (IsTreeObject(info.type)) {
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 690a1278..bb21c5e0 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_network_reader.cpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_network_reader.cpp
@@ -156,7 +156,7 @@ auto BazelNetworkReader::MakeAuxiliaryMap(
return result;
}
-auto BazelNetworkReader::ReadSingleBlob(ArtifactDigest const& digest)
+auto BazelNetworkReader::ReadSingleBlob(bazel_re::Digest const& digest)
const noexcept -> std::optional<ArtifactBlob> {
auto blob = cas_.ReadSingleBlob(instance_name_, digest);
if (blob and Validate(*blob)) {
@@ -166,6 +166,25 @@ auto BazelNetworkReader::ReadSingleBlob(ArtifactDigest const& digest)
return std::nullopt;
}
+auto BazelNetworkReader::ReadSingleBlob(ArtifactDigest const& digest)
+ const noexcept -> std::optional<ArtifactBlob> {
+ return ReadSingleBlob(static_cast<bazel_re::Digest>(digest));
+}
+
+auto BazelNetworkReader::ReadIncrementally(
+ std::vector<ArtifactDigest> const& digests) const noexcept
+ -> IncrementalReader {
+ 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& d) {
+ return static_cast<bazel_re::Digest>(d);
+ });
+ return ReadIncrementally(std::move(bazel_digests));
+}
+
auto BazelNetworkReader::ReadIncrementally(
std::vector<bazel_re::Digest> digests) const noexcept -> IncrementalReader {
return IncrementalReader{*this, std::move(digests)};
@@ -255,7 +274,7 @@ auto BazelNetworkReader::IncrementalReader::iterator::operator*() const noexcept
std::vector<bazel_re::Digest> request{begin_, current_};
return owner_.BatchReadBlobs(request);
}
- if (auto blob = owner_.ReadSingleBlob(ArtifactDigest{*begin_})) {
+ if (auto blob = owner_.ReadSingleBlob(*begin_)) {
return {std::move(*blob)};
}
}
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_network_reader.hpp b/src/buildtool/execution_api/remote/bazel/bazel_network_reader.hpp
index be16f211..f009d968 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_network_reader.hpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_network_reader.hpp
@@ -62,9 +62,16 @@ class BazelNetworkReader final {
DumpCallback const& dumper) const noexcept
-> bool;
+ [[nodiscard]] auto ReadSingleBlob(bazel_re::Digest const& digest)
+ const noexcept -> std::optional<ArtifactBlob>;
+
[[nodiscard]] auto ReadSingleBlob(ArtifactDigest const& digest)
const noexcept -> std::optional<ArtifactBlob>;
+ [[nodiscard]] auto ReadIncrementally(
+ std::vector<ArtifactDigest> const& digests) const noexcept
+ -> IncrementalReader;
+
[[nodiscard]] auto ReadIncrementally(std::vector<bazel_re::Digest> digests)
const noexcept -> IncrementalReader;
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_response.cpp b/src/buildtool/execution_api/remote/bazel/bazel_response.cpp
index 914836fe..f56f9992 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_response.cpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_response.cpp
@@ -41,7 +41,7 @@ auto ProcessDirectoryMessage(HashFunction hash_function,
auto BazelResponse::ReadStringBlob(bazel_re::Digest const& id) noexcept
-> std::string {
auto reader = network_->CreateReader();
- if (auto blob = reader.ReadSingleBlob(ArtifactDigest{id})) {
+ if (auto blob = reader.ReadSingleBlob(id)) {
return *blob->data;
}
Logger::Log(LogLevel::Warning,