diff options
author | Alexander Shalamov <alexander.shalamov@mapbox.com> | 2019-10-07 09:52:29 +0300 |
---|---|---|
committer | Alexander Shalamov <alexander.shalamov@mapbox.com> | 2020-01-13 10:57:23 +0200 |
commit | c8024cf00d1fefb8d736e0cb155326264c48372a (patch) | |
tree | 3eb0726e0077e0b3cf4adf1e0b2f6371c913ce22 | |
parent | 879c44f661c5eb762c93a721b657859a71aabfc7 (diff) | |
download | qtlocation-mapboxgl-c8024cf00d1fefb8d736e0cb155326264c48372a.tar.gz |
[node] Use new FileSourceManager interface
-rw-r--r-- | cmake/node.cmake | 3 | ||||
-rw-r--r-- | platform/node/src/node_map.cpp | 26 | ||||
-rw-r--r-- | platform/node/src/node_map.hpp | 2 | ||||
-rw-r--r-- | platform/node/src/node_request.hpp | 3 |
4 files changed, 22 insertions, 12 deletions
diff --git a/cmake/node.cmake b/cmake/node.cmake index 1e01c8edba..dba1a5499d 100644 --- a/cmake/node.cmake +++ b/cmake/node.cmake @@ -53,6 +53,9 @@ target_include_directories(mbgl-node INTERFACE target_link_libraries(mbgl-node INTERFACE mbgl-core mbgl-loop-node + # link against default filesource code, so that the node map + # can register it's default resource loader. + mbgl-filesource ) set_target_properties(mbgl-node.all PROPERTIES FOLDER "Node.js") diff --git a/platform/node/src/node_map.cpp b/platform/node/src/node_map.cpp index e55460fa29..b410a590a7 100644 --- a/platform/node/src/node_map.cpp +++ b/platform/node/src/node_map.cpp @@ -20,25 +20,19 @@ #include <mbgl/style/layers/raster_layer.hpp> #include <mbgl/style/layers/symbol_layer.hpp> +#include <mbgl/map/map.hpp> +#include <mbgl/map/map_observer.hpp> +#include <mbgl/storage/file_source_manager.hpp> #include <mbgl/storage/resource_options.hpp> -#include <mbgl/style/style.hpp> #include <mbgl/style/image.hpp> #include <mbgl/style/light.hpp> -#include <mbgl/map/map.hpp> -#include <mbgl/map/map_observer.hpp> +#include <mbgl/style/style.hpp> +#include <mbgl/util/async_request.hpp> #include <mbgl/util/exception.hpp> #include <mbgl/util/premultiply.hpp> #include <unistd.h> -namespace mbgl { - -std::shared_ptr<FileSource> FileSource::createPlatformFileSource(const ResourceOptions& options) { - return std::make_shared<node_mbgl::NodeFileSource>(reinterpret_cast<node_mbgl::NodeMap*>(options.platformContext())); -} - -} // namespace mbgl - namespace node_mbgl { struct NodeMap::RenderOptions { @@ -197,6 +191,12 @@ void NodeMap::New(const Nan::FunctionCallbackInfo<v8::Value>& info) { info.This()->SetInternalField(1, options); + mbgl::FileSourceManager::get()->registerFileSourceFactory( + mbgl::FileSourceType::ResourceLoader, [](const mbgl::ResourceOptions& resourceOptions) { + return std::make_unique<node_mbgl::NodeFileSource>( + reinterpret_cast<node_mbgl::NodeMap*>(resourceOptions.platformContext())); + }); + try { auto nodeMap = new NodeMap(options); nodeMap->Wrap(info.This()); @@ -1455,4 +1455,8 @@ std::unique_ptr<mbgl::AsyncRequest> NodeFileSource::request(const mbgl::Resource return asyncRequest; } +bool NodeFileSource::canRequest(const mbgl::Resource&) const { + return true; +} + } // namespace node_mbgl diff --git a/platform/node/src/node_map.hpp b/platform/node/src/node_map.hpp index aa440d2323..8530448b47 100644 --- a/platform/node/src/node_map.hpp +++ b/platform/node/src/node_map.hpp @@ -2,6 +2,7 @@ #include <mbgl/map/map.hpp> #include <mbgl/storage/file_source.hpp> +#include <mbgl/util/async_request.hpp> #include <mbgl/util/image.hpp> #include <exception> @@ -98,6 +99,7 @@ struct NodeFileSource : public mbgl::FileSource { NodeFileSource(NodeMap* nodeMap_) : nodeMap(nodeMap_) {} ~NodeFileSource() {} std::unique_ptr<mbgl::AsyncRequest> request(const mbgl::Resource&, mbgl::FileSource::Callback) final; + bool canRequest(const mbgl::Resource&) const override; NodeMap* nodeMap; }; diff --git a/platform/node/src/node_request.hpp b/platform/node/src/node_request.hpp index 830d262b40..0621940bb1 100644 --- a/platform/node/src/node_request.hpp +++ b/platform/node/src/node_request.hpp @@ -6,8 +6,9 @@ #include <nan.h> #pragma GCC diagnostic pop -#include <mbgl/storage/resource.hpp> #include <mbgl/storage/file_source.hpp> +#include <mbgl/storage/resource.hpp> +#include <mbgl/util/async_request.hpp> namespace node_mbgl { |