diff options
| author | Per Larsson <[email protected]> | 2021-09-21 16:27:01 +0200 |
|---|---|---|
| committer | Per Larsson <[email protected]> | 2021-09-21 16:27:01 +0200 |
| commit | 1630b31fa2752fcaf63edb0aaea04ff85f70ba15 (patch) | |
| tree | 0a5f739a342200d97e7361298cae27cc6c176de1 /zenstore/CAS.cpp | |
| parent | Refactored get/set cache pyload. (diff) | |
| parent | Update README.md (diff) | |
| download | zen-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.cpp | 39 |
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); |