diff options
Diffstat (limited to 'src/buildtool/execution_api/remote/bazel')
-rw-r--r-- | src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp | 14 | ||||
-rw-r--r-- | src/buildtool/execution_api/remote/bazel/bytestream_client.hpp | 18 |
2 files changed, 14 insertions, 18 deletions
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp b/src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp index 1516ea0c..ea248810 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp @@ -28,6 +28,7 @@ #include "src/buildtool/common/remote/client_common.hpp" #include "src/buildtool/common/remote/retry.hpp" #include "src/buildtool/common/remote/retry_config.hpp" +#include "src/buildtool/execution_api/common/bytestream_utils.hpp" #include "src/buildtool/execution_api/common/execution_common.hpp" #include "src/buildtool/execution_api/common/message_limits.hpp" #include "src/buildtool/file_system/object_type.hpp" @@ -35,13 +36,6 @@ namespace { -[[nodiscard]] auto ToResourceName(std::string const& instance_name, - bazel_re::Digest const& digest) noexcept - -> std::string { - return fmt::format( - "{}/blobs/{}/{}", instance_name, digest.hash(), digest.size_bytes()); -} - // In order to determine whether blob splitting is supported at the remote, a // trial request to the remote CAS service is issued. This is just a workaround // until the blob split API extension is accepted as part of the official remote @@ -341,13 +335,15 @@ auto BazelCasClient::UpdateSingleBlob(std::string const& instance_name, auto BazelCasClient::IncrementalReadSingleBlob(std::string const& instance_name, bazel_re::Digest const& digest) const noexcept -> ByteStreamClient::IncrementalReader { - return stream_->IncrementalRead(ToResourceName(instance_name, digest)); + return stream_->IncrementalRead( + ByteStreamUtils::ReadRequest{instance_name, digest}); } auto BazelCasClient::ReadSingleBlob( std::string const& instance_name, bazel_re::Digest const& digest) const noexcept -> std::optional<BazelBlob> { - if (auto data = stream_->Read(ToResourceName(instance_name, digest))) { + if (auto data = stream_->Read( + ByteStreamUtils::ReadRequest{instance_name, digest})) { return BazelBlob{digest, std::move(*data), /*is_exec=*/false}; } return std::nullopt; diff --git a/src/buildtool/execution_api/remote/bazel/bytestream_client.hpp b/src/buildtool/execution_api/remote/bazel/bytestream_client.hpp index a444e61b..02538384 100644 --- a/src/buildtool/execution_api/remote/bazel/bytestream_client.hpp +++ b/src/buildtool/execution_api/remote/bazel/bytestream_client.hpp @@ -70,11 +70,11 @@ class ByteStreamClient { IncrementalReader( gsl::not_null<google::bytestream::ByteStream::Stub*> const& stub, - Logger const* logger, - std::string const& resource_name) + ByteStreamUtils::ReadRequest&& read_request, + Logger const* logger) : logger_{logger} { google::bytestream::ReadRequest request{}; - request.set_resource_name(resource_name); + request.set_resource_name(std::move(read_request).ToString()); reader_ = stub->Read(&ctx_, request); } }; @@ -86,14 +86,14 @@ class ByteStreamClient { CreateChannelWithCredentials(server, port, auth)); } - [[nodiscard]] auto IncrementalRead( - std::string const& resource_name) const noexcept -> IncrementalReader { - return IncrementalReader{stub_.get(), &logger_, resource_name}; + [[nodiscard]] auto IncrementalRead(ByteStreamUtils::ReadRequest&& request) + const noexcept -> IncrementalReader { + return IncrementalReader{stub_.get(), std::move(request), &logger_}; } - [[nodiscard]] auto Read(std::string const& resource_name) const noexcept - -> std::optional<std::string> { - auto reader = IncrementalRead(resource_name); + [[nodiscard]] auto Read(ByteStreamUtils::ReadRequest&& request) + const noexcept -> std::optional<std::string> { + auto reader = IncrementalRead(std::move(request)); std::string output{}; auto data = reader.Next(); while (data and not data->empty()) { |