[core] Surface cache management APIs
These APIs need to be on the DefaultFileSource in order to be visible for the SDKs bindings.
This commit is contained in:
@@ -144,6 +144,14 @@ public:
|
||||
*/
|
||||
void deleteOfflineRegion(OfflineRegion&&, std::function<void (std::exception_ptr)>);
|
||||
|
||||
/*
|
||||
* Invalidate all the tiles from an offline region forcing Mapbox GL to revalidate
|
||||
* the tiles with the server before using. This is more efficient than deleting the
|
||||
* offline region and downloading it again because if the data on the cache matches
|
||||
* the server, no new data gets transmitted.
|
||||
*/
|
||||
void invalidateOfflineRegion(OfflineRegion&, std::function<void (std::exception_ptr)>);
|
||||
|
||||
/*
|
||||
* Changing or bypassing this limit without permission from Mapbox is prohibited
|
||||
* by the Mapbox Terms of Service.
|
||||
@@ -186,6 +194,26 @@ public:
|
||||
*/
|
||||
void resetCache(std::function<void (std::exception_ptr)>);
|
||||
|
||||
/*
|
||||
* Forces revalidation of tiles in the ambient cache.
|
||||
*
|
||||
* Forces Mapbox GL Native to revalidate tiles stored in the ambient
|
||||
* cache with the tile server before using them, making sure they
|
||||
* are the latest version. This is more efficient than cleaning the
|
||||
* cache because if the tile is considered valid after the server
|
||||
* lookup, it will not get downloaded again.
|
||||
*/
|
||||
void invalidateTileCache(std::function<void (std::exception_ptr)>);
|
||||
|
||||
/*
|
||||
* Erase tiles from the ambient cache, freeing storage space.
|
||||
*
|
||||
* Erases the tile cache, freeing resources. This operation can be
|
||||
* potentially slow because it will trigger a VACUUM on SQLite,
|
||||
* forcing the database to move pages on the filesystem.
|
||||
*/
|
||||
void clearTileCache(std::function<void (std::exception_ptr)>);
|
||||
|
||||
// For testing only.
|
||||
void setOnlineStatus(bool);
|
||||
|
||||
|
||||
@@ -87,6 +87,10 @@ public:
|
||||
callback(offlineDatabase->deleteRegion(std::move(region)));
|
||||
}
|
||||
|
||||
void invalidateRegion(int64_t regionID, std::function<void (std::exception_ptr)> callback) {
|
||||
callback(offlineDatabase->invalidateRegion(regionID));
|
||||
}
|
||||
|
||||
void setRegionObserver(int64_t regionID, std::unique_ptr<OfflineRegionObserver> observer) {
|
||||
if (auto download = getDownload(regionID)) {
|
||||
download.value()->setObserver(std::move(observer));
|
||||
@@ -184,6 +188,14 @@ public:
|
||||
callback(offlineDatabase->resetCache());
|
||||
}
|
||||
|
||||
void invalidateTileCache(std::function<void (std::exception_ptr)> callback) {
|
||||
callback(offlineDatabase->invalidateTileCache());
|
||||
}
|
||||
|
||||
void clearTileCache(std::function<void (std::exception_ptr)> callback) {
|
||||
callback(offlineDatabase->clearTileCache());
|
||||
}
|
||||
|
||||
private:
|
||||
expected<OfflineDownload*, std::exception_ptr> getDownload(int64_t regionID) {
|
||||
auto it = downloads.find(regionID);
|
||||
@@ -295,6 +307,10 @@ void DefaultFileSource::deleteOfflineRegion(OfflineRegion&& region, std::functio
|
||||
impl->actor().invoke(&Impl::deleteRegion, std::move(region), callback);
|
||||
}
|
||||
|
||||
void DefaultFileSource::invalidateOfflineRegion(OfflineRegion& region, std::function<void (std::exception_ptr)> callback) {
|
||||
impl->actor().invoke(&Impl::invalidateRegion, region.getID(), callback);
|
||||
}
|
||||
|
||||
void DefaultFileSource::setOfflineRegionObserver(OfflineRegion& region, std::unique_ptr<OfflineRegionObserver> observer) {
|
||||
impl->actor().invoke(&Impl::setRegionObserver, region.getID(), std::move(observer));
|
||||
}
|
||||
@@ -327,6 +343,14 @@ void DefaultFileSource::resetCache(std::function<void (std::exception_ptr)> call
|
||||
impl->actor().invoke(&Impl::resetCache, callback);
|
||||
}
|
||||
|
||||
void DefaultFileSource::invalidateTileCache(std::function<void (std::exception_ptr)> callback) {
|
||||
impl->actor().invoke(&Impl::invalidateTileCache, callback);
|
||||
}
|
||||
|
||||
void DefaultFileSource::clearTileCache(std::function<void (std::exception_ptr)> callback) {
|
||||
impl->actor().invoke(&Impl::clearTileCache, callback);
|
||||
}
|
||||
|
||||
// For testing only:
|
||||
|
||||
void DefaultFileSource::setOnlineStatus(const bool status) {
|
||||
|
||||
Reference in New Issue
Block a user