Parcourir la source

registered_cache: Add getter to determine source slot in content provider union
Used to determine StorageId source for application data.

Zach Hilman il y a 7 ans
Parent
commit
db2e5e5fa6
2 fichiers modifiés avec 17 ajouts et 0 suppressions
  1. 14 0
      src/core/file_sys/registered_cache.cpp
  2. 3 0
      src/core/file_sys/registered_cache.h

+ 14 - 0
src/core/file_sys/registered_cache.cpp

@@ -645,6 +645,20 @@ ContentProviderUnion::ListEntriesFilterOrigin(std::optional<ContentProviderUnion
     return out;
 }
 
+std::optional<ContentProviderUnionSlot> ContentProviderUnion::GetSlotForEntry(
+    u64 title_id, ContentRecordType type) const {
+    for (const auto& [slot, provider] : providers) {
+        if (provider == nullptr)
+            continue;
+
+        if (provider->HasEntry(title_id, type)) {
+            return slot;
+        }
+    }
+
+    return std::nullopt;
+}
+
 ManualContentProvider::~ManualContentProvider() = default;
 
 void ManualContentProvider::AddEntry(TitleType title_type, ContentRecordType content_type,

+ 3 - 0
src/core/file_sys/registered_cache.h

@@ -199,6 +199,9 @@ public:
         std::optional<TitleType> title_type = {}, std::optional<ContentRecordType> record_type = {},
         std::optional<u64> title_id = {}) const;
 
+    std::optional<ContentProviderUnionSlot> GetSlotForEntry(u64 title_id,
+                                                            ContentRecordType type) const;
+
 private:
     std::map<ContentProviderUnionSlot, ContentProvider*> providers;
 };