From d5a957afddb68c216184dff0e90e16c083be1134 Mon Sep 17 00:00:00 2001 From: Maksim Denisov Date: Thu, 23 Jan 2025 14:33:45 +0100 Subject: BazelNetworkReader: make reading methods that use bazel digest private --- .../execution_api/remote/bazel/bazel_response.cpp | 26 +++++++++++++--------- 1 file changed, 16 insertions(+), 10 deletions(-) (limited to 'src/buildtool/execution_api/remote/bazel/bazel_response.cpp') diff --git a/src/buildtool/execution_api/remote/bazel/bazel_response.cpp b/src/buildtool/execution_api/remote/bazel/bazel_response.cpp index 2ea2ce1b..ad418000 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_response.cpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_response.cpp @@ -14,12 +14,10 @@ #include "src/buildtool/execution_api/remote/bazel/bazel_response.hpp" -#include #include #include #include #include -#include #include #include @@ -66,9 +64,13 @@ 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(id)) { - return *blob->data; + auto digest = ArtifactDigestFactory::FromBazel( + network_->GetHashFunction().GetType(), id); + if (digest.has_value()) { + auto reader = network_->CreateReader(); + if (auto blob = reader.ReadSingleBlob(*digest)) { + return *blob->data; + } } Logger::Log(LogLevel::Warning, "reading digest {} from action response failed", @@ -221,13 +223,17 @@ auto BazelResponse::Populate() noexcept -> std::optional { } // obtain tree digests for output directories - std::vector tree_digests{}; + std::vector tree_digests{}; tree_digests.reserve( gsl::narrow(action_result.output_directories_size())); - std::transform(action_result.output_directories().begin(), - action_result.output_directories().end(), - std::back_inserter(tree_digests), - [](auto dir) { return dir.tree_digest(); }); + for (auto const& directory : action_result.output_directories()) { + auto digest = ArtifactDigestFactory::FromBazel( + network_->GetHashFunction().GetType(), directory.tree_digest()); + if (not digest) { + return std::move(digest).error(); + } + tree_digests.push_back(*std::move(digest)); + } // collect root digests from trees and store them auto reader = network_->CreateReader(); -- cgit v1.2.3