diff options
author | Maksim Denisov <denisov.maksim@huawei.com> | 2025-02-04 18:26:39 +0100 |
---|---|---|
committer | Maksim Denisov <denisov.maksim@huawei.com> | 2025-02-07 14:58:04 +0100 |
commit | 0a8dbe086a23bbb905514007d21e2e04cdaae1e8 (patch) | |
tree | 06136cea09fa30d857cc4f23f15ea372dfe5ef47 /src/buildtool/execution_api/remote/bazel/bazel_api.cpp | |
parent | 3bc0b895258ba8aeb04ee48525036a0a9407c9cb (diff) | |
download | justbuild-0a8dbe086a23bbb905514007d21e2e04cdaae1e8.tar.gz |
IExecutionApi: Use unordered_set in IsAvailable
Diffstat (limited to 'src/buildtool/execution_api/remote/bazel/bazel_api.cpp')
-rw-r--r-- | src/buildtool/execution_api/remote/bazel/bazel_api.cpp | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp index ed5247e5..66f81d01 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp @@ -117,14 +117,15 @@ namespace { } // Fetch unknown chunks. - auto digest_set = std::unordered_set<ArtifactDigest>{chunk_digests->begin(), - chunk_digests->end()}; - auto unique_digests = - std::vector<ArtifactDigest>{digest_set.begin(), digest_set.end()}; - - auto missing_artifact_digests = other_api.IsAvailable(unique_digests); - if (not ::RetrieveToCas( - missing_artifact_digests, other_api, network, info_map)) { + auto missing_artifact_digests = other_api.IsAvailable( + std::unordered_set(chunk_digests->begin(), chunk_digests->end())); + + std::vector<ArtifactDigest> missing_digests; + missing_digests.reserve(missing_artifact_digests.size()); + std::move(missing_artifact_digests.begin(), + missing_artifact_digests.end(), + std::back_inserter(missing_digests)); + if (not ::RetrieveToCas(missing_digests, other_api, network, info_map)) { return false; } @@ -570,8 +571,8 @@ auto BazelApi::CreateAction( } [[nodiscard]] auto BazelApi::IsAvailable( - std::vector<ArtifactDigest> const& digests) const noexcept - -> std::vector<ArtifactDigest> { + std::unordered_set<ArtifactDigest> const& digests) const noexcept + -> std::unordered_set<ArtifactDigest> { auto const back_map = BackMap<bazel_re::Digest, ArtifactDigest>::Make( &digests, ArtifactDigestFactory::ToBazel); if (not back_map.has_value()) { @@ -579,11 +580,7 @@ auto BazelApi::CreateAction( } auto const bazel_result = network_->IsAvailable(back_map->GetKeys()); - auto missing = back_map->GetValues(bazel_result); - std::vector<ArtifactDigest> result; - result.reserve(missing.size()); - std::move(missing.begin(), missing.end(), std::back_inserter(result)); - return result; + return back_map->GetValues(bazel_result); } [[nodiscard]] auto BazelApi::SplitBlob(ArtifactDigest const& blob_digest) |