summaryrefslogtreecommitdiff
path: root/src/buildtool/execution_api/common
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
parentb22ee0740857dad1f24999953864150a4f6bbcc8 (diff)
downloadjustbuild-686a13142b816dfa334bb85f3ffdcc62a81a3bb4.tar.gz
ByteStreamUtils: Use ArtifactDigest
Diffstat (limited to 'src/buildtool/execution_api/common')
-rw-r--r--src/buildtool/execution_api/common/TARGETS10
-rw-r--r--src/buildtool/execution_api/common/bytestream_utils.cpp41
-rw-r--r--src/buildtool/execution_api/common/bytestream_utils.hpp22
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;
};