diff options
author | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2020-02-27 11:26:11 +0200 |
---|---|---|
committer | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2020-02-27 11:27:54 +0200 |
commit | 56616ad4ec15e08dc49fd5c24f9c6026058055af (patch) | |
tree | 0f69791a716233b50e37b9f43cf471dfbeb52544 | |
parent | e4bd7b4f12616a4625ab6bf05250bba27d5cf1c6 (diff) | |
download | qtlocation-mapboxgl-56616ad4ec15e08dc49fd5c24f9c6026058055af.tar.gz |
[core] Introduce FileSourceManager::getDatabaseStorage() API
-rw-r--r-- | include/mbgl/storage/file_source_manager.hpp | 6 | ||||
-rw-r--r-- | platform/default/src/mbgl/storage/file_source_manager.cpp | 6 | ||||
-rw-r--r-- | src/mbgl/storage/file_source_manager.cpp | 4 |
3 files changed, 15 insertions, 1 deletions
diff --git a/include/mbgl/storage/file_source_manager.hpp b/include/mbgl/storage/file_source_manager.hpp index e62d321af7..4c6cd8e558 100644 --- a/include/mbgl/storage/file_source_manager.hpp +++ b/include/mbgl/storage/file_source_manager.hpp @@ -6,7 +6,7 @@ namespace mbgl { class ResourceOptions; - +class JointDatabaseStorage; /** * @brief A singleton class responsible for managing file sources. * @@ -32,6 +32,10 @@ public: // created, nullptr would be returned. PassRefPtr<FileSource> getFileSource(FileSourceType, const ResourceOptions&) noexcept; + // Returns shared instance of a joint database storage for the given options. + // Creates new instance, if needed. If new instance cannot be created, nullptr would be returned. + virtual PassRefPtr<JointDatabaseStorage> getDatabaseStorage(const ResourceOptions&) noexcept; + // Registers file source factory for a provided FileSourceType type. If factory for the // same type was already registered, will unregister previously registered factory. // Provided factory must not be null. diff --git a/platform/default/src/mbgl/storage/file_source_manager.cpp b/platform/default/src/mbgl/storage/file_source_manager.cpp index 1a13f05568..05ba64c45b 100644 --- a/platform/default/src/mbgl/storage/file_source_manager.cpp +++ b/platform/default/src/mbgl/storage/file_source_manager.cpp @@ -33,6 +33,12 @@ public: return networkSource; }); } + + PassRefPtr<JointDatabaseStorage> getDatabaseStorage(const ResourceOptions& options) noexcept override { + auto dbFileSource = std::static_pointer_cast<mbgl::DatabaseFileSource>( + std::shared_ptr<FileSource>(getFileSource(FileSourceType::Database, options))); + return std::shared_ptr<JointDatabaseStorage>(dbFileSource); + } }; FileSourceManager* FileSourceManager::get() noexcept { diff --git a/src/mbgl/storage/file_source_manager.cpp b/src/mbgl/storage/file_source_manager.cpp index 6689d5314a..c8cd53f53e 100644 --- a/src/mbgl/storage/file_source_manager.cpp +++ b/src/mbgl/storage/file_source_manager.cpp @@ -62,6 +62,10 @@ PassRefPtr<FileSource> FileSourceManager::getFileSource(FileSourceType type, con return fileSource; } +PassRefPtr<JointDatabaseStorage> FileSourceManager::getDatabaseStorage(const ResourceOptions&) noexcept { + return {nullptr}; +} + void FileSourceManager::registerFileSourceFactory(FileSourceType type, FileSourceFactory&& factory) noexcept { assert(factory); std::lock_guard<std::recursive_mutex> lock(impl->mutex); |