summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2020-02-27 11:26:11 +0200
committerMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2020-02-27 11:27:54 +0200
commit56616ad4ec15e08dc49fd5c24f9c6026058055af (patch)
tree0f69791a716233b50e37b9f43cf471dfbeb52544
parente4bd7b4f12616a4625ab6bf05250bba27d5cf1c6 (diff)
downloadqtlocation-mapboxgl-56616ad4ec15e08dc49fd5c24f9c6026058055af.tar.gz
[core] Introduce FileSourceManager::getDatabaseStorage() API
-rw-r--r--include/mbgl/storage/file_source_manager.hpp6
-rw-r--r--platform/default/src/mbgl/storage/file_source_manager.cpp6
-rw-r--r--src/mbgl/storage/file_source_manager.cpp4
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);