diff options
author | Maksim Denisov <denisov.maksim@huawei.com> | 2025-01-23 17:11:39 +0100 |
---|---|---|
committer | Maksim Denisov <denisov.maksim@huawei.com> | 2025-02-07 14:58:04 +0100 |
commit | 686a13142b816dfa334bb85f3ffdcc62a81a3bb4 (patch) | |
tree | f9296ee10f11b3528f5ef89f6bf544ff3182fdc4 /src/buildtool/execution_api/common | |
parent | b22ee0740857dad1f24999953864150a4f6bbcc8 (diff) | |
download | justbuild-686a13142b816dfa334bb85f3ffdcc62a81a3bb4.tar.gz |
ByteStreamUtils: Use ArtifactDigest
Diffstat (limited to 'src/buildtool/execution_api/common')
-rw-r--r-- | src/buildtool/execution_api/common/TARGETS | 10 | ||||
-rw-r--r-- | src/buildtool/execution_api/common/bytestream_utils.cpp | 41 | ||||
-rw-r--r-- | src/buildtool/execution_api/common/bytestream_utils.hpp | 22 |
3 files changed, 56 insertions, 17 deletions
diff --git a/src/buildtool/execution_api/common/TARGETS b/src/buildtool/execution_api/common/TARGETS index e2dd5d3b..df50ecaf 100644 --- a/src/buildtool/execution_api/common/TARGETS +++ b/src/buildtool/execution_api/common/TARGETS @@ -40,8 +40,16 @@ , "name": ["bytestream_utils"] , "hdrs": ["bytestream_utils.hpp"] , "srcs": ["bytestream_utils.cpp"] + , "deps": + [ ["src/buildtool/common", "common"] + , ["src/buildtool/crypto", "hash_function"] + , ["src/utils/cpp", "expected"] + ] , "private-deps": - [["@", "fmt", "", "fmt"], ["src/buildtool/common", "bazel_types"]] + [ ["@", "fmt", "", "fmt"] + , ["src/buildtool/common", "artifact_digest_factory"] + , ["src/buildtool/common", "bazel_types"] + ] , "stage": ["src", "buildtool", "execution_api", "common"] } , "api_bundle": 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); } diff --git a/src/buildtool/execution_api/common/bytestream_utils.hpp b/src/buildtool/execution_api/common/bytestream_utils.hpp index 232c6728..16904f4f 100644 --- a/src/buildtool/execution_api/common/bytestream_utils.hpp +++ b/src/buildtool/execution_api/common/bytestream_utils.hpp @@ -16,10 +16,13 @@ #define INCLUDED_SRC_BUILDTOOL_EXECUTION_API_COMMON_BYTESTREAM_UTILS_HPP #include <cstddef> -#include <cstdint> #include <optional> #include <string> +#include "src/buildtool/common/artifact_digest.hpp" +#include "src/buildtool/crypto/hash_function.hpp" +#include "src/utils/cpp/expected.hpp" + namespace build::bazel::remote::execution::v2 { class Digest; } @@ -43,6 +46,9 @@ class ByteStreamUtils final { explicit ReadRequest(std::string instance_name, bazel_re::Digest const& digest) noexcept; + explicit ReadRequest(std::string instance_name, + ArtifactDigest const& digest) noexcept; + [[nodiscard]] auto ToString() && noexcept -> std::string; [[nodiscard]] static auto FromString( @@ -53,12 +59,13 @@ class ByteStreamUtils final { return instance_name_; } - [[nodiscard]] auto GetDigest() const noexcept -> bazel_re::Digest; + [[nodiscard]] auto GetDigest(HashFunction::Type hash_type) + const noexcept -> expected<ArtifactDigest, std::string>; private: std::string instance_name_; std::string hash_; - std::int64_t size_ = 0; + std::size_t size_ = 0; ReadRequest() = default; }; @@ -74,6 +81,10 @@ class ByteStreamUtils final { std::string uuid, bazel_re::Digest const& digest) noexcept; + explicit WriteRequest(std::string instance_name, + std::string uuid, + ArtifactDigest const& digest) noexcept; + [[nodiscard]] auto ToString() && noexcept -> std::string; [[nodiscard]] static auto FromString( @@ -88,13 +99,14 @@ class ByteStreamUtils final { return uuid_; } - [[nodiscard]] auto GetDigest() const noexcept -> bazel_re::Digest; + [[nodiscard]] auto GetDigest(HashFunction::Type hash_type) + const noexcept -> expected<ArtifactDigest, std::string>; private: std::string instance_name_; std::string uuid_; std::string hash_; - std::int64_t size_ = 0; + std::size_t size_ = 0; WriteRequest() = default; }; |