diff --git a/bin/render.cpp b/bin/render.cpp index 71f74b043..26fd06d50 100644 --- a/bin/render.cpp +++ b/bin/render.cpp @@ -6,7 +6,6 @@ #include #include #include -#include #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunknown-pragmas" @@ -65,8 +64,7 @@ int main(int argc, char *argv[]) { using namespace mbgl; util::RunLoop loop; - SQLiteCache cache(cache_file); - DefaultFileSource fileSource(&cache); + DefaultFileSource fileSource(cache_file); // Try to load the token from the environment. if (!token.size()) { diff --git a/include/mbgl/storage/default_file_source.hpp b/include/mbgl/storage/default_file_source.hpp index 3689b9e93..83ea4adf5 100644 --- a/include/mbgl/storage/default_file_source.hpp +++ b/include/mbgl/storage/default_file_source.hpp @@ -5,16 +5,17 @@ namespace mbgl { -class FileCache; - class DefaultFileSource : public FileSource { public: - DefaultFileSource(FileCache*, const std::string& root = ""); + DefaultFileSource(const std::string& cachePath = ":memory:", const std::string& root = ""); ~DefaultFileSource() override; void setAccessToken(const std::string&); std::string getAccessToken() const; + void setMaximumCacheSize(uint64_t size); + void setMaximumCacheEntrySize(uint64_t size); + std::unique_ptr request(const Resource&, Callback) override; private: diff --git a/platform/android/src/native_map_view.cpp b/platform/android/src/native_map_view.cpp index 30fdee81b..96b48e12c 100644 --- a/platform/android/src/native_map_view.cpp +++ b/platform/android/src/native_map_view.cpp @@ -75,8 +75,7 @@ NativeMapView::NativeMapView(JNIEnv *env, jobject obj_, float pixelRatio_, int a return; } - fileCache = mbgl::SharedSQLiteCache::get(mbgl::android::cachePath + "/mbgl-cache.db"); - fileSource = std::make_unique(fileCache.get()); + fileSource = std::make_unique(mbgl::android::cachePath + "/mbgl-cache.db"); map = std::make_unique(*this, *fileSource, MapMode::Continuous); float zoomFactor = map->getMaxZoom() - map->getMinZoom() + 1; @@ -103,7 +102,6 @@ NativeMapView::~NativeMapView() { map.reset(); fileSource.reset(); - fileCache.reset(); jint ret; JNIEnv *env = nullptr; diff --git a/platform/android/src/native_map_view.hpp b/platform/android/src/native_map_view.hpp index 7b5473d48..cc88403c3 100644 --- a/platform/android/src/native_map_view.hpp +++ b/platform/android/src/native_map_view.hpp @@ -4,7 +4,6 @@ #include #include #include -#include #include #include @@ -91,7 +90,6 @@ private: JNIEnv *renderEnv = nullptr; // Ensure these are initialised last - std::shared_ptr fileCache; std::unique_ptr fileSource; std::unique_ptr map; }; diff --git a/platform/default/default_file_source.cpp b/platform/default/default_file_source.cpp index b2ab5abd6..d2bbce600 100644 --- a/platform/default/default_file_source.cpp +++ b/platform/default/default_file_source.cpp @@ -1,19 +1,22 @@ #include #include +#include namespace mbgl { class DefaultFileSource::Impl { public: - Impl(FileCache* cache, const std::string& root) - : onlineFileSource(cache, root) { + Impl(const std::string& cachePath, const std::string& root) + : cache(SharedSQLiteCache::get(cachePath)), + onlineFileSource(cache.get(), root) { } + std::shared_ptr cache; OnlineFileSource onlineFileSource; }; -DefaultFileSource::DefaultFileSource(FileCache* cache, const std::string& root) - : impl(std::make_unique(cache, root)) { +DefaultFileSource::DefaultFileSource(const std::string& cachePath, const std::string& root) + : impl(std::make_unique(cachePath, root)) { } DefaultFileSource::~DefaultFileSource() = default; @@ -26,6 +29,14 @@ std::string DefaultFileSource::getAccessToken() const { return impl->onlineFileSource.getAccessToken(); } +void DefaultFileSource::setMaximumCacheSize(uint64_t size) { + impl->cache->setMaximumCacheSize(size); +} + +void DefaultFileSource::setMaximumCacheEntrySize(uint64_t size) { + impl->cache->setMaximumCacheEntrySize(size); +} + std::unique_ptr DefaultFileSource::request(const Resource& resource, Callback callback) { return impl->onlineFileSource.request(resource, callback); } diff --git a/platform/ios/src/MGLMapView.mm b/platform/ios/src/MGLMapView.mm index 7fe040b0f..4ee12942b 100644 --- a/platform/ios/src/MGLMapView.mm +++ b/platform/ios/src/MGLMapView.mm @@ -16,7 +16,6 @@ #include #include #include -#include #include #include #include @@ -154,7 +153,6 @@ public: { mbgl::Map *_mbglMap; MBGLView *_mbglView; - std::shared_ptr _mbglFileCache; mbgl::DefaultFileSource *_mbglFileSource; BOOL _opaque; @@ -281,8 +279,7 @@ std::chrono::steady_clock::duration MGLDurationInSeconds(float duration) NSString *libraryDirectory = [paths objectAtIndex:0]; fileCachePath = [libraryDirectory stringByAppendingPathComponent:@"cache.db"]; } - _mbglFileCache = mbgl::SharedSQLiteCache::get([fileCachePath UTF8String]); - _mbglFileSource = new mbgl::DefaultFileSource(_mbglFileCache.get()); + _mbglFileSource = new mbgl::DefaultFileSource([fileCachePath UTF8String]); // setup mbgl map _mbglMap = new mbgl::Map(*_mbglView, *_mbglFileSource, mbgl::MapMode::Continuous); diff --git a/platform/linux/main.cpp b/platform/linux/main.cpp index 45f2b8def..d6cf10fe7 100644 --- a/platform/linux/main.cpp +++ b/platform/linux/main.cpp @@ -5,7 +5,6 @@ #include #include #include -#include #include #include @@ -106,11 +105,9 @@ int main(int argc, char *argv[]) { view = std::make_unique(fullscreen, benchmark); - mbgl::SQLiteCache cache("/tmp/mbgl-cache.db"); - cache.setMaximumCacheEntrySize(1 * 1024 * 1024); // 1 MB - cache.setMaximumCacheSize(50 * 1024 * 1024); // 50 MB - - mbgl::DefaultFileSource fileSource(&cache); + mbgl::DefaultFileSource fileSource("/tmp/mbgl-cache.db"); + fileSource.setMaximumCacheEntrySize(1 * 1024 * 1024); // 1 MB + fileSource.setMaximumCacheSize(50 * 1024 * 1024); // 50 MB // Set access token if present const char *token = getenv("MAPBOX_ACCESS_TOKEN"); diff --git a/platform/osx/src/MGLMapView.mm b/platform/osx/src/MGLMapView.mm index 7646e524a..7215963fb 100644 --- a/platform/osx/src/MGLMapView.mm +++ b/platform/osx/src/MGLMapView.mm @@ -22,7 +22,6 @@ #import #import #import -#import #import #import #import @@ -152,7 +151,6 @@ public: /// Cross-platform map view controller. mbgl::Map *_mbglMap; MGLMapViewImpl *_mbglView; - std::shared_ptr _mbglFileCache; mbgl::DefaultFileSource *_mbglFileSource; NSPanGestureRecognizer *_panGestureRecognizer; @@ -248,8 +246,7 @@ public: error:nil]; NSURL *cacheURL = [cacheDirectoryURL URLByAppendingPathComponent:@"cache.db"]; NSString *cachePath = cacheURL ? cacheURL.path : @""; - _mbglFileCache = mbgl::SharedSQLiteCache::get(cachePath.UTF8String); - _mbglFileSource = new mbgl::DefaultFileSource(_mbglFileCache.get()); + _mbglFileSource = new mbgl::DefaultFileSource(cachePath.UTF8String); _mbglMap = new mbgl::Map(*_mbglView, *_mbglFileSource, mbgl::MapMode::Continuous); diff --git a/include/mbgl/storage/sqlite_cache.hpp b/src/mbgl/storage/sqlite_cache.hpp similarity index 100% rename from include/mbgl/storage/sqlite_cache.hpp rename to src/mbgl/storage/sqlite_cache.hpp