aboutsummaryrefslogtreecommitdiff
path: root/zenstore/CAS.cpp
diff options
context:
space:
mode:
authorPer Larsson <[email protected]>2021-09-21 16:27:01 +0200
committerPer Larsson <[email protected]>2021-09-21 16:27:01 +0200
commit1630b31fa2752fcaf63edb0aaea04ff85f70ba15 (patch)
tree0a5f739a342200d97e7361298cae27cc6c176de1 /zenstore/CAS.cpp
parentRefactored get/set cache pyload. (diff)
parentUpdate README.md (diff)
downloadzen-1630b31fa2752fcaf63edb0aaea04ff85f70ba15.tar.xz
zen-1630b31fa2752fcaf63edb0aaea04ff85f70ba15.zip
Merge branch 'main' of https://github.com/EpicGames/zen
Diffstat (limited to 'zenstore/CAS.cpp')
-rw-r--r--zenstore/CAS.cpp39
1 files changed, 36 insertions, 3 deletions
diff --git a/zenstore/CAS.cpp b/zenstore/CAS.cpp
index a3837d159..eaf72cb41 100644
--- a/zenstore/CAS.cpp
+++ b/zenstore/CAS.cpp
@@ -26,6 +26,39 @@
namespace zen {
void
+CasChunkSet::AddChunkToSet(const IoHash& HashToAdd)
+{
+ m_ChunkSet.insert(HashToAdd);
+}
+
+void
+CasChunkSet::RemoveChunksIf(std::function<bool(const IoHash& CandidateHash)>&& Predicate)
+{
+ for (auto It = begin(m_ChunkSet), ItEnd = end(m_ChunkSet); It != ItEnd;)
+ {
+ if (Predicate(*It))
+ {
+ It = m_ChunkSet.erase(It);
+ }
+ else
+ {
+ ++It;
+ }
+ }
+}
+
+void
+CasChunkSet::IterateChunks(std::function<void(const IoHash& ChunkHash)>&& Callback)
+{
+ for (auto It = begin(m_ChunkSet), ItEnd = end(m_ChunkSet); It != ItEnd;)
+ {
+ Callback(*It);
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////
+
+void
ScrubContext::ReportBadChunks(std::span<IoHash> BadChunks)
{
ZEN_UNUSED(BadChunks);
@@ -226,11 +259,11 @@ TEST_CASE("CasStore")
CHECK(Result2.New);
CasChunkSet ChunkSet;
- ChunkSet.AddChunk(Hash1);
- ChunkSet.AddChunk(Hash2);
+ ChunkSet.AddChunkToSet(Hash1);
+ ChunkSet.AddChunkToSet(Hash2);
Store->FilterChunks(ChunkSet);
- CHECK(ChunkSet.GetChunkSet().size() == 0);
+ CHECK(ChunkSet.IsEmpty());
IoBuffer Lookup1 = Store->FindChunk(Hash1);
CHECK(Lookup1);