summaryrefslogtreecommitdiff
path: root/view/sharedcache/core/SharedCache.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'view/sharedcache/core/SharedCache.cpp')
-rw-r--r--view/sharedcache/core/SharedCache.cpp15
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)
{