summaryrefslogtreecommitdiff
path: root/src/buildtool/common/artifact.hpp
diff options
context:
space:
mode:
authorSascha Roloff <sascha.roloff@huawei.com>2022-07-11 19:55:10 +0200
committerSascha Roloff <sascha.roloff@huawei.com>2022-08-05 14:41:31 +0200
commitee6f54124360d8a72b9b545dcc581f3c80d3c8a9 (patch)
tree20ab0e5e0e8132c30da0f99c401750d712fe00d0 /src/buildtool/common/artifact.hpp
parent76c17ffa9e079fdd3d2a7159c02a1d9593e11930 (diff)
downloadjustbuild-ee6f54124360d8a72b9b545dcc581f3c80d3c8a9.tar.gz
Modified artifact digest to provide wire digest on demand
Diffstat (limited to 'src/buildtool/common/artifact.hpp')
-rw-r--r--src/buildtool/common/artifact.hpp19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/buildtool/common/artifact.hpp b/src/buildtool/common/artifact.hpp
index 3f68a351..a073b0d7 100644
--- a/src/buildtool/common/artifact.hpp
+++ b/src/buildtool/common/artifact.hpp
@@ -63,8 +63,10 @@ class Artifact {
}
try {
std::size_t size = std::stoul(size_str);
- return ObjectInfo{ArtifactDigest{id, size},
- FromChar(*type.c_str())};
+ auto const& object_type = FromChar(*type.c_str());
+ return ObjectInfo{
+ ArtifactDigest{id, size, IsTreeObject(object_type)},
+ object_type};
} catch (std::out_of_range const& e) {
Logger::Log(LogLevel::Error,
"size raised out_of_range exception.");
@@ -79,10 +81,12 @@ class Artifact {
-> std::optional<ObjectInfo> {
if (j.is_object() and j["id"].is_string() and
j["size"].is_number() and j["type"].is_string()) {
- return ObjectInfo{
- ArtifactDigest{j["id"].get<std::string>(),
- j["size"].get<std::size_t>()},
- FromChar(*(j["type"].get<std::string>().c_str()))};
+ auto const& object_type =
+ FromChar(*(j["type"].get<std::string>().c_str()));
+ return ObjectInfo{ArtifactDigest{j["id"].get<std::string>(),
+ j["size"].get<std::size_t>(),
+ IsTreeObject(object_type)},
+ object_type};
}
return std::nullopt;
}
@@ -168,7 +172,8 @@ class Artifact {
std::size_t size,
ObjectType type,
std::optional<std::string> const& repo) noexcept -> Artifact {
- return Artifact{id, {hash, size}, type, false, repo};
+ return Artifact{
+ id, {hash, size, IsTreeObject(type)}, type, false, repo};
}
[[nodiscard]] static auto CreateActionArtifact(