summaryrefslogtreecommitdiff
path: root/src/buildtool/execution_api/common/artifact_blob.hpp
diff options
context:
space:
mode:
authorMaksim Denisov <denisov.maksim@huawei.com>2025-01-29 17:04:05 +0100
committerMaksim Denisov <denisov.maksim@huawei.com>2025-02-07 14:58:04 +0100
commit5eb04ac36577b8eab29c24b311852aa05b2fcdff (patch)
treefbf6c567d12e51f56e1ed2774d8167712f0b89fd /src/buildtool/execution_api/common/artifact_blob.hpp
parent2ce9018150d71931853f1bec4f516432ff558186 (diff)
downloadjustbuild-5eb04ac36577b8eab29c24b311852aa05b2fcdff.tar.gz
Move implementation of ContentBlob to artifact_blob
...and remove ContentBlob.
Diffstat (limited to 'src/buildtool/execution_api/common/artifact_blob.hpp')
-rw-r--r--src/buildtool/execution_api/common/artifact_blob.hpp45
1 files changed, 43 insertions, 2 deletions
diff --git a/src/buildtool/execution_api/common/artifact_blob.hpp b/src/buildtool/execution_api/common/artifact_blob.hpp
index 5e113123..b1e8980a 100644
--- a/src/buildtool/execution_api/common/artifact_blob.hpp
+++ b/src/buildtool/execution_api/common/artifact_blob.hpp
@@ -15,9 +15,50 @@
#ifndef INCLUDED_SRC_BUILDTOOL_EXECUTION_API_COMMON_ARTIFACT_BLOB_HPP
#define INCLUDED_SRC_BUILDTOOL_EXECUTION_API_COMMON_ARTIFACT_BLOB_HPP
+#include <cstddef>
+#include <functional>
+#include <memory>
+#include <string>
+#include <utility> //std::move
+
+#include "gsl/gsl"
#include "src/buildtool/common/artifact_digest.hpp"
-#include "src/buildtool/execution_api/common/content_blob_container.hpp"
+#include "src/utils/cpp/hash_combine.hpp"
+
+struct ArtifactBlob final {
+ ArtifactBlob(ArtifactDigest digest,
+ std::string mydata,
+ bool is_exec) noexcept
+ : digest{std::move(digest)},
+ data{std::make_shared<std::string>(std::move(mydata))},
+ is_exec{is_exec} {}
+
+ ArtifactBlob(ArtifactDigest digest,
+ gsl::not_null<std::shared_ptr<std::string>> const& mydata,
+ bool is_exec) noexcept
+ : digest{std::move(digest)}, data(mydata), is_exec{is_exec} {}
+
+ [[nodiscard]] auto operator==(ArtifactBlob const& other) const noexcept
+ -> bool {
+ return digest == other.digest and is_exec == other.is_exec;
+ }
+
+ ArtifactDigest digest;
+ std::shared_ptr<std::string> data;
+ bool is_exec = false;
+};
-using ArtifactBlob = ContentBlob<ArtifactDigest>;
+namespace std {
+template <>
+struct hash<ArtifactBlob> {
+ [[nodiscard]] auto operator()(ArtifactBlob const& blob) const noexcept
+ -> std::size_t {
+ std::size_t seed{};
+ hash_combine(&seed, blob.digest);
+ hash_combine(&seed, blob.is_exec);
+ return seed;
+ }
+};
+} // namespace std
#endif // INCLUDED_SRC_BUILDTOOL_EXECUTION_API_COMMON_ARTIFACT_BLOB_HPP