diff options
author | Maksim Denisov <denisov.maksim@huawei.com> | 2025-02-20 12:44:37 +0100 |
---|---|---|
committer | Maksim Denisov <denisov.maksim@huawei.com> | 2025-02-21 14:46:30 +0100 |
commit | 185d67664ff4e6cd87a4190ce233bd0cf1a40f98 (patch) | |
tree | aba8721bc7c6723e8ae7f35999ec658bee56f86b | |
parent | ff9a8dfbe17f88cec92a00f00d2dbfb9015e342b (diff) | |
download | justbuild-185d67664ff4e6cd87a4190ce233bd0cf1a40f98.tar.gz |
ByteStreamUtils: Simplify ReadRequest and WriteRequest
4 files changed, 27 insertions, 42 deletions
diff --git a/src/buildtool/execution_api/common/bytestream_utils.cpp b/src/buildtool/execution_api/common/bytestream_utils.cpp index 13759eba..93acede8 100644 --- a/src/buildtool/execution_api/common/bytestream_utils.cpp +++ b/src/buildtool/execution_api/common/bytestream_utils.cpp @@ -60,18 +60,14 @@ namespace { } } // namespace -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 { +auto ByteStreamUtils::ReadRequest::ToString( + std::string instance_name, + ArtifactDigest const& digest) noexcept -> std::string { return fmt::format("{}/{}/{}/{}", - std::move(instance_name_), + std::move(instance_name), ByteStreamUtils::kBlobs, - std::move(hash_), - size_); + ArtifactDigestFactory::ToBazel(digest).hash(), + digest.size()); } auto ByteStreamUtils::ReadRequest::FromString( @@ -105,23 +101,17 @@ auto ByteStreamUtils::ReadRequest::GetDigest(HashFunction::Type hash_type) return ArtifactDigestFactory::FromBazel(hash_type, bazel_digest); } -ByteStreamUtils::WriteRequest::WriteRequest( +auto ByteStreamUtils::WriteRequest::ToString( 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 { + ArtifactDigest const& digest) noexcept -> std::string { return fmt::format("{}/{}/{}/{}/{}/{}", - std::move(instance_name_), + std::move(instance_name), ByteStreamUtils::kUploads, - std::move(uuid_), + std::move(uuid), ByteStreamUtils::kBlobs, - std::move(hash_), - size_); + ArtifactDigestFactory::ToBazel(digest).hash(), + digest.size()); } auto ByteStreamUtils::WriteRequest::FromString( diff --git a/src/buildtool/execution_api/common/bytestream_utils.hpp b/src/buildtool/execution_api/common/bytestream_utils.hpp index a9d5ff59..52d96a25 100644 --- a/src/buildtool/execution_api/common/bytestream_utils.hpp +++ b/src/buildtool/execution_api/common/bytestream_utils.hpp @@ -38,10 +38,9 @@ class ByteStreamUtils final { /// "instance_name_example/blobs/62183d7a696acf7e69e218efc82c93135f8c85f895/4424712" class ReadRequest final { public: - explicit ReadRequest(std::string instance_name, - ArtifactDigest const& digest) noexcept; - - [[nodiscard]] auto ToString() && noexcept -> std::string; + [[nodiscard]] static auto ToString( + std::string instance_name, + ArtifactDigest const& digest) noexcept -> std::string; [[nodiscard]] static auto FromString( std::string const& request) noexcept -> std::optional<ReadRequest>; @@ -59,7 +58,7 @@ class ByteStreamUtils final { std::string hash_; std::size_t size_ = 0; - ReadRequest() = default; + explicit ReadRequest() = default; }; /// \brief Create a write request for the bytestream service to be @@ -69,11 +68,10 @@ class ByteStreamUtils final { /// "instance_name_example/uploads/c4f03510-7d56-4490-8934-01bce1b1288e/blobs/62183d7a696acf7e69e218efc82c93135f8c85f895/4424712" class WriteRequest final { public: - explicit WriteRequest(std::string instance_name, - std::string uuid, - ArtifactDigest const& digest) noexcept; - - [[nodiscard]] auto ToString() && noexcept -> std::string; + [[nodiscard]] static auto ToString( + std::string instance_name, + std::string uuid, + ArtifactDigest const& digest) noexcept -> std::string; [[nodiscard]] static auto FromString( std::string const& request) noexcept -> std::optional<WriteRequest>; @@ -96,7 +94,7 @@ class ByteStreamUtils final { std::string hash_; std::size_t size_ = 0; - WriteRequest() = default; + explicit WriteRequest() = default; }; }; diff --git a/src/buildtool/execution_api/remote/bazel/bytestream_client.hpp b/src/buildtool/execution_api/remote/bazel/bytestream_client.hpp index e4f8f465..213e4793 100644 --- a/src/buildtool/execution_api/remote/bazel/bytestream_client.hpp +++ b/src/buildtool/execution_api/remote/bazel/bytestream_client.hpp @@ -83,10 +83,8 @@ class ByteStreamClient { Logger const* logger) : logger_{logger} { google::bytestream::ReadRequest request{}; - - auto resource_name = - ByteStreamUtils::ReadRequest{instance_name, digest}.ToString(); - request.set_resource_name(std::move(resource_name)); + request.set_resource_name( + ByteStreamUtils::ReadRequest::ToString(instance_name, digest)); reader_ = stub->Read(&ctx_, request); } }; @@ -138,9 +136,8 @@ class ByteStreamClient { google::bytestream::WriteResponse response{}; auto writer = stub_->Write(&ctx, &response); - auto const resource_name = - ByteStreamUtils::WriteRequest{instance_name, uuid, blob.digest} - .ToString(); + auto const resource_name = ByteStreamUtils::WriteRequest::ToString( + instance_name, uuid, blob.digest); google::bytestream::WriteRequest request{}; request.set_resource_name(resource_name); diff --git a/test/buildtool/execution_api/common/bytestream_utils.test.cpp b/test/buildtool/execution_api/common/bytestream_utils.test.cpp index 4c20b7f2..38a84715 100644 --- a/test/buildtool/execution_api/common/bytestream_utils.test.cpp +++ b/test/buildtool/execution_api/common/bytestream_utils.test.cpp @@ -34,7 +34,7 @@ TEST_CASE("ReadRequest", "[common]") { hash_function, "test_string"); std::string const request = - ByteStreamUtils::ReadRequest{kInstanceName, digest}.ToString(); + ByteStreamUtils::ReadRequest::ToString(kInstanceName, digest); auto const parsed = ByteStreamUtils::ReadRequest::FromString(request); auto parsed_digest = parsed->GetDigest(hash_function.GetType()); REQUIRE(parsed); @@ -55,7 +55,7 @@ TEST_CASE("WriteRequest", "[common]") { hash_function, "test_string"); std::string const request = - ByteStreamUtils::WriteRequest{kInstanceName, uuid, digest}.ToString(); + ByteStreamUtils::WriteRequest::ToString(kInstanceName, uuid, digest); auto const parsed = ByteStreamUtils::WriteRequest::FromString(request); auto parsed_digest = parsed->GetDigest(hash_function.GetType()); REQUIRE(parsed); |