summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Shalamov <alexander.shalamov@mapbox.com>2019-10-07 09:52:29 +0300
committerAlexander Shalamov <alexander.shalamov@mapbox.com>2020-01-13 10:57:23 +0200
commitc8024cf00d1fefb8d736e0cb155326264c48372a (patch)
tree3eb0726e0077e0b3cf4adf1e0b2f6371c913ce22
parent879c44f661c5eb762c93a721b657859a71aabfc7 (diff)
downloadqtlocation-mapboxgl-c8024cf00d1fefb8d736e0cb155326264c48372a.tar.gz
[node] Use new FileSourceManager interface
-rw-r--r--cmake/node.cmake3
-rw-r--r--platform/node/src/node_map.cpp26
-rw-r--r--platform/node/src/node_map.hpp2
-rw-r--r--platform/node/src/node_request.hpp3
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 {