summaryrefslogtreecommitdiff
path: root/src/buildtool/execution_api/common/bytestream_utils.cpp
diff options
context:
space:
mode:
authorMaksim Denisov <denisov.maksim@huawei.com>2025-01-23 17:11:39 +0100
committerMaksim Denisov <denisov.maksim@huawei.com>2025-02-07 14:58:04 +0100
commit686a13142b816dfa334bb85f3ffdcc62a81a3bb4 (patch)
treef9296ee10f11b3528f5ef89f6bf544ff3182fdc4 /src/buildtool/execution_api/common/bytestream_utils.cpp
parentb22ee0740857dad1f24999953864150a4f6bbcc8 (diff)
downloadjustbuild-686a13142b816dfa334bb85f3ffdcc62a81a3bb4.tar.gz
ByteStreamUtils: Use ArtifactDigest
Diffstat (limited to 'src/buildtool/execution_api/common/bytestream_utils.cpp')
-rw-r--r--src/buildtool/execution_api/common/bytestream_utils.cpp41
1 files changed, 30 insertions, 11 deletions
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 <cstdint>
#include <string_view>
#include <utility>
#include <vector>
#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<std::int64_t>(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<std::size_t>(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<ArtifactDigest, std::string> {
+ 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<std::size_t>(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<ArtifactDigest, std::string> {
+ auto bazel_digest = ToBazelDigest(hash_, size_);
+ return ArtifactDigestFactory::FromBazel(hash_type, bazel_digest);
}