summaryrefslogtreecommitdiff
path: root/src/buildtool/execution_api/common
diff options
context:
space:
mode:
authorMaksim Denisov <denisov.maksim@huawei.com>2025-02-04 18:26:39 +0100
committerMaksim Denisov <denisov.maksim@huawei.com>2025-02-07 14:58:04 +0100
commit0a8dbe086a23bbb905514007d21e2e04cdaae1e8 (patch)
tree06136cea09fa30d857cc4f23f15ea372dfe5ef47 /src/buildtool/execution_api/common
parent3bc0b895258ba8aeb04ee48525036a0a9407c9cb (diff)
downloadjustbuild-0a8dbe086a23bbb905514007d21e2e04cdaae1e8.tar.gz
IExecutionApi: Use unordered_set in IsAvailable
Diffstat (limited to 'src/buildtool/execution_api/common')
-rw-r--r--src/buildtool/execution_api/common/common_api.hpp7
-rw-r--r--src/buildtool/execution_api/common/execution_api.hpp5
2 files changed, 7 insertions, 5 deletions
diff --git a/src/buildtool/execution_api/common/common_api.hpp b/src/buildtool/execution_api/common/common_api.hpp
index 991b9875..d5daa3dd 100644
--- a/src/buildtool/execution_api/common/common_api.hpp
+++ b/src/buildtool/execution_api/common/common_api.hpp
@@ -21,6 +21,7 @@
#include <iterator>
#include <optional>
#include <unordered_map>
+#include <unordered_set>
#include <vector>
#include "gsl/gsl"
@@ -39,7 +40,7 @@
/// to some given original type.
template <typename T>
struct MissingArtifactsInfo {
- std::vector<ArtifactDigest> digests;
+ std::unordered_set<ArtifactDigest> digests;
std::unordered_map<ArtifactDigest, T> back_map;
};
@@ -69,7 +70,7 @@ template <typename TValue, typename TIterator>
TIterator const& end,
typename std::function<ArtifactDigest(TValue const&)> const&
converter) noexcept -> std::optional<MissingArtifactsInfo<TValue>> {
- std::vector<ArtifactDigest> digests;
+ std::unordered_set<ArtifactDigest> digests;
digests.reserve(std::distance(begin, end));
MissingArtifactsInfo<TValue> res{};
for (auto it = begin; it != end; ++it) {
@@ -77,7 +78,7 @@ template <typename TValue, typename TIterator>
auto const inserted =
res.back_map.insert({std::invoke(converter, *it), *it});
if (inserted.second) {
- digests.emplace_back(inserted.first->first);
+ digests.emplace(inserted.first->first);
}
} catch (...) {
return std::nullopt;
diff --git a/src/buildtool/execution_api/common/execution_api.hpp b/src/buildtool/execution_api/common/execution_api.hpp
index 02c78bcc..b868b57d 100644
--- a/src/buildtool/execution_api/common/execution_api.hpp
+++ b/src/buildtool/execution_api/common/execution_api.hpp
@@ -21,6 +21,7 @@
#include <memory>
#include <optional>
#include <string>
+#include <unordered_set>
#include <vector>
#include "src/buildtool/common/artifact.hpp" // Artifact::ObjectInfo
@@ -129,8 +130,8 @@ class IExecutionApi {
ArtifactDigest const& digest) const noexcept -> bool = 0;
[[nodiscard]] virtual auto IsAvailable(
- std::vector<ArtifactDigest> const& digests) const noexcept
- -> std::vector<ArtifactDigest> = 0;
+ std::unordered_set<ArtifactDigest> const& digests) const noexcept
+ -> std::unordered_set<ArtifactDigest> = 0;
[[nodiscard]] virtual auto SplitBlob(ArtifactDigest const& /*blob_digest*/)
const noexcept -> std::optional<std::vector<ArtifactDigest>> {