summaryrefslogtreecommitdiff
path: root/src/buildtool/execution_api/remote/bazel
diff options
context:
space:
mode:
authorMaksim Denisov <denisov.maksim@huawei.com>2024-09-17 10:20:55 +0200
committerMaksim Denisov <denisov.maksim@huawei.com>2024-09-18 09:45:19 +0200
commit60748d2914568e54f852281141f7c128c3ca1f2c (patch)
tree144ebe2871a46bc8b250892e3fd0ac948647763e /src/buildtool/execution_api/remote/bazel
parent7d2f632b1dd1fe2ca01ef89716efe355e4d32687 (diff)
downloadjustbuild-60748d2914568e54f852281141f7c128c3ca1f2c.tar.gz
Implement ByteStreamUtils::ReadRequest class
...and remove split serialization/deserialization implementations.
Diffstat (limited to 'src/buildtool/execution_api/remote/bazel')
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp14
-rw-r--r--src/buildtool/execution_api/remote/bazel/bytestream_client.hpp18
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()) {