DiscIO: Add IsCached virtual function to BlobReader.

This commit is contained in:
Jordan Woyak committed 2026-02-15 20:14:15 -06:00
1 parent aaa7094442
commit 3681cade41
2 files changed
+11

No files matched your search

+3
View File
@@ -97,6 +97,9 @@ public:
return false; return false;
} }
// Returns true only for CachedBlobReader.
virtual bool IsCached() const { return false; }
protected: protected:
BlobReader() {} BlobReader() {}
}; };
+8
View File
@@ -219,6 +219,8 @@ public:
return m_cache_filler->Read(offset, size, out_ptr) || m_reader->Read(offset, size, out_ptr); return m_cache_filler->Read(offset, size, out_ptr) || m_reader->Read(offset, size, out_ptr);
} }
bool IsCached() const override { return true; }
private: private:
// A shared object does the cache filling for sensible CopyReader behavior. // A shared object does the cache filling for sensible CopyReader behavior.
const std::shared_ptr<CacheFiller> m_cache_filler; const std::shared_ptr<CacheFiller> m_cache_filler;
@@ -228,11 +230,17 @@ private:
std::unique_ptr<BlobReader> CreateCachedBlobReader(std::unique_ptr<BlobReader> reader) std::unique_ptr<BlobReader> CreateCachedBlobReader(std::unique_ptr<BlobReader> reader)
{ {
if (reader->IsCached()) // This is already CachedBlobReader.
return reader;
return std::make_unique<CachedBlobReader>(std::move(reader), false); return std::make_unique<CachedBlobReader>(std::move(reader), false);
} }
std::unique_ptr<BlobReader> CreateScrubbingCachedBlobReader(std::unique_ptr<BlobReader> reader) std::unique_ptr<BlobReader> CreateScrubbingCachedBlobReader(std::unique_ptr<BlobReader> reader)
{ {
if (reader->IsCached()) // This reader is already a CachedBlobReader.
return reader;
return std::make_unique<CachedBlobReader>(std::move(reader), true); return std::make_unique<CachedBlobReader>(std::move(reader), true);
} }