summaryrefslogtreecommitdiff
path: root/src/buildtool/execution_api/execution_service/cas_utils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildtool/execution_api/execution_service/cas_utils.cpp')
-rw-r--r--src/buildtool/execution_api/execution_service/cas_utils.cpp27
1 files changed, 14 insertions, 13 deletions
diff --git a/src/buildtool/execution_api/execution_service/cas_utils.cpp b/src/buildtool/execution_api/execution_service/cas_utils.cpp
index 7dee7dc7..592cd6ce 100644
--- a/src/buildtool/execution_api/execution_service/cas_utils.cpp
+++ b/src/buildtool/execution_api/execution_service/cas_utils.cpp
@@ -47,16 +47,16 @@ auto CASUtils::EnsureTreeInvariant(bazel_re::Digest const& digest,
auto CASUtils::SplitBlobIdentity(bazel_re::Digest const& blob_digest,
Storage const& storage) noexcept
- -> std::variant<std::vector<bazel_re::Digest>, grpc::Status> {
+ -> expected<std::vector<bazel_re::Digest>, grpc::Status> {
// Check blob existence.
auto path = NativeSupport::IsTree(blob_digest.hash())
? storage.CAS().TreePath(blob_digest)
: storage.CAS().BlobPath(blob_digest, false);
if (not path) {
- return grpc::Status{
- grpc::StatusCode::NOT_FOUND,
- fmt::format("blob not found {}", blob_digest.hash())};
+ return unexpected{
+ grpc::Status{grpc::StatusCode::NOT_FOUND,
+ fmt::format("blob not found {}", blob_digest.hash())}};
}
// The split protocol states that each chunk that is returned by the
@@ -67,15 +67,16 @@ auto CASUtils::SplitBlobIdentity(bazel_re::Digest const& blob_digest,
if (NativeSupport::IsTree(blob_digest.hash())) {
auto tree_data = FileSystemManager::ReadFile(*path);
if (not tree_data) {
- return grpc::Status{
+ return unexpected{grpc::Status{
grpc::StatusCode::INTERNAL,
- fmt::format("could read tree data {}", blob_digest.hash())};
+ fmt::format("could read tree data {}", blob_digest.hash())}};
}
auto digest = storage.CAS().StoreBlob(*tree_data, false);
if (not digest) {
- return grpc::Status{grpc::StatusCode::INTERNAL,
- fmt::format("could not store tree as blob {}",
- blob_digest.hash())};
+ return unexpected{
+ grpc::Status{grpc::StatusCode::INTERNAL,
+ fmt::format("could not store tree as blob {}",
+ blob_digest.hash())}};
}
chunk_digests.emplace_back(*digest);
return chunk_digests;
@@ -86,7 +87,7 @@ auto CASUtils::SplitBlobIdentity(bazel_re::Digest const& blob_digest,
auto CASUtils::SplitBlobFastCDC(bazel_re::Digest const& blob_digest,
Storage const& storage) noexcept
- -> std::variant<std::vector<bazel_re::Digest>, grpc::Status> {
+ -> expected<std::vector<bazel_re::Digest>, grpc::Status> {
// Split blob into chunks:
auto split = NativeSupport::IsTree(blob_digest.hash())
? storage.CAS().SplitTree(blob_digest)
@@ -97,13 +98,13 @@ auto CASUtils::SplitBlobFastCDC(bazel_re::Digest const& blob_digest,
return *std::move(split);
}
// Process errors
- return ToGrpc(std::move(split).error());
+ return unexpected{ToGrpc(std::move(split).error())};
}
auto CASUtils::SpliceBlob(bazel_re::Digest const& blob_digest,
std::vector<bazel_re::Digest> const& chunk_digests,
Storage const& storage) noexcept
- -> std::variant<bazel_re::Digest, grpc::Status> {
+ -> expected<bazel_re::Digest, grpc::Status> {
// Splice blob from chunks:
auto splice =
NativeSupport::IsTree(blob_digest.hash())
@@ -114,5 +115,5 @@ auto CASUtils::SpliceBlob(bazel_re::Digest const& blob_digest,
if (splice) {
return *std::move(splice);
}
- return ToGrpc(std::move(splice).error());
+ return unexpected{ToGrpc(std::move(splice).error())};
}