diff options
Diffstat (limited to 'src/zenserver/cache/cachedisklayer.cpp')
| -rw-r--r-- | src/zenserver/cache/cachedisklayer.cpp | 38 |
1 files changed, 21 insertions, 17 deletions
diff --git a/src/zenserver/cache/cachedisklayer.cpp b/src/zenserver/cache/cachedisklayer.cpp index 4289c96f9..9bb75480e 100644 --- a/src/zenserver/cache/cachedisklayer.cpp +++ b/src/zenserver/cache/cachedisklayer.cpp @@ -246,7 +246,9 @@ ZenCacheDiskLayer::CacheBucket::OpenOrCreate(std::filesystem::path BucketDir, bo const auto _ = MakeGuard([&] { ZEN_INFO("read store manifest '{}' in {}", ManifestPath, NiceTimeSpanMs(Timer.GetElapsedTimeMs())); }); - uint64_t Count = Manifest["Count"sv].AsUInt64(0); + const uint64_t kInvalidIndex = ~(0ull); + + const uint64_t Count = Manifest["Count"sv].AsUInt64(0); if (Count != 0) { std::vector<size_t> KeysIndexes; @@ -257,20 +259,21 @@ ZenCacheDiskLayer::CacheBucket::OpenOrCreate(std::filesystem::path BucketDir, bo if (auto It = m_Index.find(KeyView.AsHash()); It != m_Index.end()) { KeysIndexes.push_back(It.value()); - continue; } - KeysIndexes.push_back((uint64_t)-1); + else + { + KeysIndexes.push_back(kInvalidIndex); + } } size_t KeyIndexOffset = 0; CbArrayView TimeStampArray = Manifest["Timestamps"].AsArrayView(); for (CbFieldView& TimeStampView : TimeStampArray) { - size_t KeyIndex = KeysIndexes[KeyIndexOffset++]; - if (KeyIndex == (uint64_t)-1) + const size_t KeyIndex = KeysIndexes[KeyIndexOffset++]; + if (KeyIndex != kInvalidIndex) { - continue; + m_AccessTimes[KeyIndex] = TimeStampView.AsInt64(); } - m_AccessTimes[KeyIndex] = TimeStampView.AsInt64(); } KeyIndexOffset = 0; CbArrayView RawHashArray = Manifest["RawHash"].AsArrayView(); @@ -281,18 +284,19 @@ ZenCacheDiskLayer::CacheBucket::OpenOrCreate(std::filesystem::path BucketDir, bo auto RawSizeIt = RawSizeArray.CreateViewIterator(); while (RawHashIt != CbFieldViewIterator()) { - size_t KeyIndex = KeysIndexes[KeyIndexOffset++]; - if (KeyIndex == (uint64_t)-1) - { - continue; - } - uint64_t RawSize = RawSizeIt.AsUInt64(); - IoHash RawHash = RawHashIt.AsHash(); - if (RawSize != 0 || RawHash != IoHash::Zero) + const size_t KeyIndex = KeysIndexes[KeyIndexOffset++]; + + if (KeyIndex != kInvalidIndex) { - BucketPayload& Payload = m_Payloads[KeyIndex]; - SetMetaData(Payload, BucketMetaData{.RawSize = RawSize, .RawHash = RawHash}); + uint64_t RawSize = RawSizeIt.AsUInt64(); + IoHash RawHash = RawHashIt.AsHash(); + if (RawSize != 0 || RawHash != IoHash::Zero) + { + BucketPayload& Payload = m_Payloads[KeyIndex]; + SetMetaData(Payload, BucketMetaData{.RawSize = RawSize, .RawHash = RawHash}); + } } + RawHashIt++; RawSizeIt++; } |