diff options
| author | Mason Reed <mason@vector35.com> | 2025-02-19 23:17:55 -0500 |
|---|---|---|
| committer | Mason Reed <mason@vector35.com> | 2025-04-02 05:36:54 -0400 |
| commit | ad337df11a3939dea833fc39d7ee555a427b9d09 (patch) | |
| tree | f393f670f428eb6f2f621eeb3dc630caca62fdaf /view/sharedcache/core/SharedCache.cpp | |
| parent | 0d228d32f6087ea95d5de5235dd25aa6eeb7f406 (diff) | |
[SharedCache] Warn when loading BNDB with different shared cache metadata version
This does not actually give the user control to exit early, that looks to need core changes.
Diffstat (limited to 'view/sharedcache/core/SharedCache.cpp')
| -rw-r--r-- | view/sharedcache/core/SharedCache.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/view/sharedcache/core/SharedCache.cpp b/view/sharedcache/core/SharedCache.cpp index 9e578384..a9d8a70b 100644 --- a/view/sharedcache/core/SharedCache.cpp +++ b/view/sharedcache/core/SharedCache.cpp @@ -3594,6 +3594,21 @@ bool SharedCacheMetadata::ViewHasMetadata(BinaryView* view) return view->QueryMetadata(Tag); } +std::optional<unsigned int> SharedCacheMetadata::ViewMetadataVersion(BinaryView* view) +{ + // Whether the view has compatible metadata. I.e. if the version differs. + Ref<Metadata> viewMetadata = view->QueryMetadata(Tag); + if (!viewMetadata) + return std::nullopt; + DeserializationContext context; + rapidjson::ParseResult result = context.doc.Parse(viewMetadata->GetString().c_str()); + if (!result) + return std::nullopt; + if (!context.doc.HasMember("metadataVersion")) + return std::nullopt; + return context.doc["metadataVersion"].GetUint(); +} + // static std::optional<SharedCacheMetadata> SharedCacheMetadata::LoadFromView(BinaryView* view) { |
