diff options
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) { |
