summaryrefslogtreecommitdiff
path: root/platform/default/src/mbgl/storage
diff options
context:
space:
mode:
Diffstat (limited to 'platform/default/src/mbgl/storage')
-rw-r--r--platform/default/src/mbgl/storage/default_file_source.cpp8
-rw-r--r--platform/default/src/mbgl/storage/offline_database.cpp8
2 files changed, 16 insertions, 0 deletions
diff --git a/platform/default/src/mbgl/storage/default_file_source.cpp b/platform/default/src/mbgl/storage/default_file_source.cpp
index 1ccf999109..08fbbff9a0 100644
--- a/platform/default/src/mbgl/storage/default_file_source.cpp
+++ b/platform/default/src/mbgl/storage/default_file_source.cpp
@@ -177,6 +177,10 @@ public:
offlineDatabase->put(resource, response);
}
+ void resetCache(std::function<void (std::exception_ptr)> callback) {
+ callback(offlineDatabase->resetCache());
+ }
+
private:
expected<OfflineDownload*, std::exception_ptr> getDownload(int64_t regionID) {
auto it = downloads.find(regionID);
@@ -316,6 +320,10 @@ void DefaultFileSource::put(const Resource& resource, const Response& response)
impl->actor().invoke(&Impl::put, resource, response);
}
+void DefaultFileSource::resetCache(std::function<void (std::exception_ptr)> callback) {
+ impl->actor().invoke(&Impl::resetCache, callback);
+}
+
// For testing only:
void DefaultFileSource::setOnlineStatus(const bool status) {
diff --git a/platform/default/src/mbgl/storage/offline_database.cpp b/platform/default/src/mbgl/storage/offline_database.cpp
index 752f5ac20a..1639c4484c 100644
--- a/platform/default/src/mbgl/storage/offline_database.cpp
+++ b/platform/default/src/mbgl/storage/offline_database.cpp
@@ -1136,4 +1136,12 @@ bool OfflineDatabase::exceedsOfflineMapboxTileCountLimit(const Resource& resourc
&& offlineMapboxTileCountLimitExceeded();
}
+std::exception_ptr OfflineDatabase::resetCache() try {
+ removeExisting();
+ initialize();
+ return nullptr;
+} catch (...) {
+ return std::current_exception();
+}
+
} // namespace mbgl