From 956ed669cf71d1ee74dbb573c542a7565c3a90d3 Mon Sep 17 00:00:00 2001 From: Oliver Reiche Date: Thu, 27 Jun 2024 17:17:33 +0200 Subject: Use (un)expected for CAS utils --- src/buildtool/execution_api/local/local_api.hpp | 26 +++++++++++-------------- 1 file changed, 11 insertions(+), 15 deletions(-) (limited to 'src/buildtool/execution_api/local/local_api.hpp') diff --git a/src/buildtool/execution_api/local/local_api.hpp b/src/buildtool/execution_api/local/local_api.hpp index 85547de1..f9eefb64 100644 --- a/src/buildtool/execution_api/local/local_api.hpp +++ b/src/buildtool/execution_api/local/local_api.hpp @@ -341,19 +341,17 @@ class LocalApi final : public IExecutionApi { Logger::Log(LogLevel::Debug, "SplitBlob({})", blob_digest.hash()); auto split_result = CASUtils::SplitBlobFastCDC( static_cast(blob_digest), *storage_); - if (std::holds_alternative(split_result)) { - auto* status = std::get_if(&split_result); - Logger::Log(LogLevel::Error, status->error_message()); + if (not split_result) { + Logger::Log(LogLevel::Error, split_result.error().error_message()); return std::nullopt; } - auto* chunk_digests = - std::get_if>(&split_result); + auto const& chunk_digests = *split_result; Logger::Log(LogLevel::Debug, [&blob_digest, &chunk_digests]() { std::stringstream ss{}; ss << "Split blob " << blob_digest.hash() << ":" - << blob_digest.size() << " into " << chunk_digests->size() + << blob_digest.size() << " into " << chunk_digests.size() << " chunks: [ "; - for (auto const& chunk_digest : *chunk_digests) { + for (auto const& chunk_digest : chunk_digests) { ss << chunk_digest.hash() << ":" << chunk_digest.size_bytes() << " "; } @@ -361,10 +359,10 @@ class LocalApi final : public IExecutionApi { return ss.str(); }); auto artifact_digests = std::vector{}; - artifact_digests.reserve(chunk_digests->size()); + artifact_digests.reserve(chunk_digests.size()); std::transform( - chunk_digests->cbegin(), - chunk_digests->cend(), + chunk_digests.cbegin(), + chunk_digests.cend(), std::back_inserter(artifact_digests), [](auto const& digest) { return ArtifactDigest{digest}; }); return artifact_digests; @@ -393,13 +391,11 @@ class LocalApi final : public IExecutionApi { }); auto splice_result = CASUtils::SpliceBlob( static_cast(blob_digest), digests, *storage_); - if (std::holds_alternative(splice_result)) { - auto* status = std::get_if(&splice_result); - Logger::Log(LogLevel::Error, status->error_message()); + if (not splice_result) { + Logger::Log(LogLevel::Error, splice_result.error().error_message()); return std::nullopt; } - auto* digest = std::get_if(&splice_result); - return ArtifactDigest{*digest}; + return ArtifactDigest{*std::move(splice_result)}; } [[nodiscard]] auto BlobSpliceSupport() const noexcept -> bool final { -- cgit v1.2.3