DiscIO: Add IsCached virtual function to BlobReader.

This commit is contained in:
Jordan Woyak 2026-02-07 23:01:05 -06:00
parent aaa7094442
commit 3681cade41
2 changed files with 11 additions and 0 deletions

View File

@ -97,6 +97,9 @@ public:
return false;
}
// Returns true only for CachedBlobReader.
virtual bool IsCached() const { return false; }
protected:
BlobReader() {}
};

View File

@ -219,6 +219,8 @@ public:
return m_cache_filler->Read(offset, size, out_ptr) || m_reader->Read(offset, size, out_ptr);
}
bool IsCached() const override { return true; }
private:
// A shared object does the cache filling for sensible CopyReader behavior.
const std::shared_ptr<CacheFiller> m_cache_filler;
@ -228,11 +230,17 @@ private:
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);
}
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);
}