summaryrefslogtreecommitdiff
path: root/src/buildtool/serve_api/remote/target_client.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildtool/serve_api/remote/target_client.cpp')
-rw-r--r--src/buildtool/serve_api/remote/target_client.cpp18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/buildtool/serve_api/remote/target_client.cpp b/src/buildtool/serve_api/remote/target_client.cpp
index 917f1133..d0e6796e 100644
--- a/src/buildtool/serve_api/remote/target_client.cpp
+++ b/src/buildtool/serve_api/remote/target_client.cpp
@@ -25,7 +25,9 @@
#include "src/buildtool/common/remote/client_common.hpp"
#include "src/buildtool/logging/log_level.hpp"
-TargetClient::TargetClient(ServerAddress const& address) noexcept {
+TargetClient::TargetClient(ServerAddress const& address,
+ gsl::not_null<ApiBundle const*> const& apis) noexcept
+ : apis_{*apis} {
stub_ = justbuild::just_serve::Target::NewStub(
CreateChannelWithCredentials(address.host, address.port));
}
@@ -34,17 +36,17 @@ auto TargetClient::ServeTarget(const TargetCacheKey& key,
const std::string& repo_key) const noexcept
-> std::optional<serve_target_result_t> {
// make sure the blob containing the key is in the remote cas
- if (!local_api_->RetrieveToCas({key.Id()}, &*remote_api_)) {
+ if (!apis_.local->RetrieveToCas({key.Id()}, &*apis_.remote)) {
return serve_target_result_t{
std::in_place_index<1>,
fmt::format("Failed to retrieve to remote cas ObjectInfo {}",
key.Id().ToString())};
}
// make sure the repository configuration blob is in the remote cas
- if (!local_api_->RetrieveToCas(
+ if (!apis_.local->RetrieveToCas(
{Artifact::ObjectInfo{.digest = ArtifactDigest{repo_key, 0, false},
.type = ObjectType::File}},
- &*remote_api_)) {
+ &*apis_.remote)) {
return serve_target_result_t{
std::in_place_index<1>,
fmt::format("Failed to retrieve to remote cas blob {}", repo_key)};
@@ -90,7 +92,7 @@ auto TargetClient::ServeTarget(const TargetCacheKey& key,
}
auto const& dispatch_info = Artifact::ObjectInfo{
.digest = ArtifactDigest{*dispatch_dgst}, .type = ObjectType::File};
- if (!local_api_->RetrieveToCas({dispatch_info}, &*remote_api_)) {
+ if (!apis_.local->RetrieveToCas({dispatch_info}, &*apis_.remote)) {
return serve_target_result_t{
std::in_place_index<1>,
fmt::format("Failed to upload blob {} to remote cas",
@@ -122,8 +124,8 @@ auto TargetClient::ServeTarget(const TargetCacheKey& key,
ArtifactDigest{response.target_value()};
auto const& obj_info = Artifact::ObjectInfo{
.digest = target_value_dgst, .type = ObjectType::File};
- if (!local_api_->IsAvailable(target_value_dgst)) {
- if (!remote_api_->RetrieveToCas({obj_info}, &*local_api_)) {
+ if (!apis_.local->IsAvailable(target_value_dgst)) {
+ if (!apis_.remote->RetrieveToCas({obj_info}, &*apis_.local)) {
return serve_target_result_t{
std::in_place_index<1>,
fmt::format(
@@ -132,7 +134,7 @@ auto TargetClient::ServeTarget(const TargetCacheKey& key,
}
}
auto const& target_value_str =
- local_api_->RetrieveToMemory(obj_info);
+ apis_.local->RetrieveToMemory(obj_info);
if (!target_value_str) {
return serve_target_result_t{
std::in_place_index<1>,