diff options
author | Petr Mrázek <peterix@gmail.com> | 2015-04-01 00:23:17 +0200 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2015-04-01 00:23:17 +0200 |
commit | 3b6574181e5e0a5d99ed9dcdb5cb9a47af2499d0 (patch) | |
tree | 1fd0d4b4dbda6883553b058453c3d6fb2629242c /logic/net | |
parent | eae544f0ebc26a2b103091b93d4f7c4188d00cff (diff) | |
download | MultiMC-3b6574181e5e0a5d99ed9dcdb5cb9a47af2499d0.tar MultiMC-3b6574181e5e0a5d99ed9dcdb5cb9a47af2499d0.tar.gz MultiMC-3b6574181e5e0a5d99ed9dcdb5cb9a47af2499d0.tar.lz MultiMC-3b6574181e5e0a5d99ed9dcdb5cb9a47af2499d0.tar.xz MultiMC-3b6574181e5e0a5d99ed9dcdb5cb9a47af2499d0.zip |
GH-853 evict asset index files from cache when they don't parse
Diffstat (limited to 'logic/net')
-rw-r--r-- | logic/net/HttpMetaCache.cpp | 16 | ||||
-rw-r--r-- | logic/net/HttpMetaCache.h | 3 |
2 files changed, 19 insertions, 0 deletions
diff --git a/logic/net/HttpMetaCache.cpp b/logic/net/HttpMetaCache.cpp index eb13ee6b..4533a736 100644 --- a/logic/net/HttpMetaCache.cpp +++ b/logic/net/HttpMetaCache.cpp @@ -135,6 +135,17 @@ bool HttpMetaCache::updateEntry(MetaEntryPtr stale_entry) return true; } +bool HttpMetaCache::evictEntry(MetaEntryPtr entry) +{ + if(entry) + { + entry->stale = true; + SaveEventually(); + return true; + } + return false; +} + MetaEntryPtr HttpMetaCache::staleEntry(QString base, QString resource_path) { auto foo = new MetaEntry; @@ -228,6 +239,11 @@ void HttpMetaCache::SaveNow() { for (auto entry : group.entry_list) { + // do not save stale entries. they are dead. + if(entry->stale) + { + continue; + } QJsonObject entryObj; entryObj.insert("base", QJsonValue(entry->base)); entryObj.insert("path", QJsonValue(entry->path)); diff --git a/logic/net/HttpMetaCache.h b/logic/net/HttpMetaCache.h index 55a34165..dd44623c 100644 --- a/logic/net/HttpMetaCache.h +++ b/logic/net/HttpMetaCache.h @@ -51,6 +51,9 @@ public: // add a previously resolved stale entry bool updateEntry(MetaEntryPtr stale_entry); + // evict selected entry from cache + bool evictEntry(MetaEntryPtr entry); + void addBase(QString base, QString base_root); // (re)start a timer that calls SaveNow later. |