summaryrefslogtreecommitdiff
path: root/src/buildtool/execution_api/local/local_api.cpp
diff options
context:
space:
mode:
authorMaksim Denisov <denisov.maksim@huawei.com>2025-02-25 13:42:22 +0100
committerMaksim Denisov <denisov.maksim@huawei.com>2025-02-27 09:03:30 +0100
commit461312b57d3b49f92861d2c6c5e8a6b13ffa839b (patch)
treec642cd0d3379e6886d1b3847d38661e249e75d58 /src/buildtool/execution_api/local/local_api.cpp
parenteccc7dcfb22fb9c6c42bbcd5566cd044acd1a2f3 (diff)
downloadjustbuild-461312b57d3b49f92861d2c6c5e8a6b13ffa839b.tar.gz
ArtifactBlob: Use static function for construction
Diffstat (limited to 'src/buildtool/execution_api/local/local_api.cpp')
-rw-r--r--src/buildtool/execution_api/local/local_api.cpp22
1 files changed, 9 insertions, 13 deletions
diff --git a/src/buildtool/execution_api/local/local_api.cpp b/src/buildtool/execution_api/local/local_api.cpp
index 040b4be6..92953190 100644
--- a/src/buildtool/execution_api/local/local_api.cpp
+++ b/src/buildtool/execution_api/local/local_api.cpp
@@ -25,7 +25,6 @@
#include <grpcpp/support/status.h>
-#include "src/buildtool/common/artifact_digest_factory.hpp"
#include "src/buildtool/common/protocol_traits.hpp"
#include "src/buildtool/execution_api/bazel_msg/directory_tree.hpp"
#include "src/buildtool/execution_api/common/common_api.hpp"
@@ -177,26 +176,23 @@ auto LocalApi::RetrieveToCas(
}
// Read artifact content (file or symlink).
- auto const& content = FileSystemManager::ReadFile(*path);
+ auto content = FileSystemManager::ReadFile(*path);
if (not content) {
return false;
}
- // Regenerate digest since object infos read by
- // storage_.ReadTreeInfos() will contain 0 as size.
- ArtifactDigest digest =
- IsTreeObject(info->type)
- ? ArtifactDigestFactory::HashDataAs<ObjectType::Tree>(
- local_context_.storage_config->hash_function, *content)
- : ArtifactDigestFactory::HashDataAs<ObjectType::File>(
- local_context_.storage_config->hash_function, *content);
+ auto blob = ArtifactBlob::FromMemory(
+ local_context_.storage_config->hash_function,
+ info->type,
+ *std::move(content));
+ if (not blob.has_value()) {
+ return false;
+ }
// Collect blob and upload to remote CAS if transfer size reached.
if (not UpdateContainerAndUpload(
&container,
- ArtifactBlob{std::move(digest),
- *content,
- IsExecutableObject(info->type)},
+ *std::move(blob),
/*exception_is_fatal=*/true,
[&api](std::unordered_set<ArtifactBlob>&& blobs) {
return api.Upload(std::move(blobs),