From 5eb04ac36577b8eab29c24b311852aa05b2fcdff Mon Sep 17 00:00:00 2001 From: Maksim Denisov Date: Wed, 29 Jan 2025 17:04:05 +0100 Subject: Move implementation of ContentBlob to artifact_blob ...and remove ContentBlob. --- .../execution_api/common/artifact_blob.hpp | 45 +++++++++++++++++++++- 1 file changed, 43 insertions(+), 2 deletions(-) (limited to 'src/buildtool/execution_api/common/artifact_blob.hpp') 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 +#include +#include +#include +#include //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::move(mydata))}, + is_exec{is_exec} {} + + ArtifactBlob(ArtifactDigest digest, + gsl::not_null> 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 data; + bool is_exec = false; +}; -using ArtifactBlob = ContentBlob; +namespace std { +template <> +struct hash { + [[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 -- cgit v1.2.3