From 686a13142b816dfa334bb85f3ffdcc62a81a3bb4 Mon Sep 17 00:00:00 2001 From: Maksim Denisov Date: Thu, 23 Jan 2025 17:11:39 +0100 Subject: ByteStreamUtils: Use ArtifactDigest --- .../execution_api/common/bytestream_utils.cpp | 41 ++++++++++++++++------ 1 file changed, 30 insertions(+), 11 deletions(-) (limited to 'src/buildtool/execution_api/common/bytestream_utils.cpp') diff --git a/src/buildtool/execution_api/common/bytestream_utils.cpp b/src/buildtool/execution_api/common/bytestream_utils.cpp index de66d58e..b21d8133 100644 --- a/src/buildtool/execution_api/common/bytestream_utils.cpp +++ b/src/buildtool/execution_api/common/bytestream_utils.cpp @@ -14,11 +14,13 @@ #include "src/buildtool/execution_api/common/bytestream_utils.hpp" +#include #include #include #include #include "fmt/core.h" +#include "src/buildtool/common/artifact_digest_factory.hpp" #include "src/buildtool/common/bazel_types.hpp" namespace { @@ -49,11 +51,11 @@ namespace { } [[nodiscard]] inline auto ToBazelDigest(std::string hash, - std::int64_t size) noexcept + std::size_t size) noexcept -> bazel_re::Digest { bazel_re::Digest digest{}; digest.set_hash(std::move(hash)); - digest.set_size_bytes(size); + digest.set_size_bytes(static_cast(size)); return digest; } } // namespace @@ -63,7 +65,13 @@ ByteStreamUtils::ReadRequest::ReadRequest( bazel_re::Digest const& digest) noexcept : instance_name_{std::move(instance_name)}, hash_{digest.hash()}, - size_{digest.size_bytes()} {} + size_{static_cast(digest.size_bytes())} {} + +ByteStreamUtils::ReadRequest::ReadRequest(std::string instance_name, + ArtifactDigest const& digest) noexcept + : instance_name_{std::move(instance_name)}, + hash_{ArtifactDigestFactory::ToBazel(digest).hash()}, + size_{digest.size()} {} auto ByteStreamUtils::ReadRequest::ToString() && noexcept -> std::string { return fmt::format("{}/{}/{}/{}", @@ -98,9 +106,10 @@ auto ByteStreamUtils::ReadRequest::FromString( return result; } -auto ByteStreamUtils::ReadRequest::GetDigest() const noexcept - -> bazel_re::Digest { - return ToBazelDigest(hash_, size_); +auto ByteStreamUtils::ReadRequest::GetDigest(HashFunction::Type hash_type) + const noexcept -> expected { + auto bazel_digest = ToBazelDigest(hash_, size_); + return ArtifactDigestFactory::FromBazel(hash_type, bazel_digest); } ByteStreamUtils::WriteRequest::WriteRequest( @@ -110,7 +119,16 @@ ByteStreamUtils::WriteRequest::WriteRequest( : instance_name_{std::move(instance_name)}, uuid_{std::move(uuid)}, hash_{digest.hash()}, - size_{digest.size_bytes()} {} + size_{static_cast(digest.size_bytes())} {} + +ByteStreamUtils::WriteRequest::WriteRequest( + std::string instance_name, + std::string uuid, + ArtifactDigest const& digest) noexcept + : instance_name_{std::move(instance_name)}, + uuid_{std::move(uuid)}, + hash_{ArtifactDigestFactory::ToBazel(digest).hash()}, + size_{digest.size()} {} auto ByteStreamUtils::WriteRequest::ToString() && noexcept -> std::string { return fmt::format("{}/{}/{}/{}/{}/{}", @@ -144,14 +162,15 @@ auto ByteStreamUtils::WriteRequest::FromString( result.uuid_ = std::string(parts.at(kUUIDIndex)); result.hash_ = std::string(parts.at(kHashIndex)); try { - result.size_ = std::stoi(std::string(parts.at(kSizeIndex))); + result.size_ = std::stoul(std::string(parts.at(kSizeIndex))); } catch (...) { return std::nullopt; } return result; } -auto ByteStreamUtils::WriteRequest::GetDigest() const noexcept - -> bazel_re::Digest { - return ToBazelDigest(hash_, size_); +auto ByteStreamUtils::WriteRequest::GetDigest(HashFunction::Type hash_type) + const noexcept -> expected { + auto bazel_digest = ToBazelDigest(hash_, size_); + return ArtifactDigestFactory::FromBazel(hash_type, bazel_digest); } -- cgit v1.2.3