From c8024cf00d1fefb8d736e0cb155326264c48372a Mon Sep 17 00:00:00 2001 From: Alexander Shalamov Date: Mon, 7 Oct 2019 09:52:29 +0300 Subject: [PATCH] [node] Use new FileSourceManager interface --- cmake/node.cmake | 3 +++ platform/node/src/node_map.cpp | 28 ++++++++++++++++------------ platform/node/src/node_map.hpp | 2 ++ platform/node/src/node_request.hpp | 3 ++- 4 files changed, 23 insertions(+), 13 deletions(-) diff --git a/cmake/node.cmake b/cmake/node.cmake index 1e01c8edb..dba1a5499 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 e55460fa2..b410a590a 100644 --- a/platform/node/src/node_map.cpp +++ b/platform/node/src/node_map.cpp @@ -20,25 +20,19 @@ #include #include -#include -#include -#include -#include #include #include +#include +#include +#include +#include +#include +#include #include #include #include -namespace mbgl { - -std::shared_ptr FileSource::createPlatformFileSource(const ResourceOptions& options) { - return std::make_shared(reinterpret_cast(options.platformContext())); -} - -} // namespace mbgl - namespace node_mbgl { struct NodeMap::RenderOptions { @@ -197,6 +191,12 @@ void NodeMap::New(const Nan::FunctionCallbackInfo& info) { info.This()->SetInternalField(1, options); + mbgl::FileSourceManager::get()->registerFileSourceFactory( + mbgl::FileSourceType::ResourceLoader, [](const mbgl::ResourceOptions& resourceOptions) { + return std::make_unique( + reinterpret_cast(resourceOptions.platformContext())); + }); + try { auto nodeMap = new NodeMap(options); nodeMap->Wrap(info.This()); @@ -1455,4 +1455,8 @@ std::unique_ptr 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 aa440d232..8530448b4 100644 --- a/platform/node/src/node_map.hpp +++ b/platform/node/src/node_map.hpp @@ -2,6 +2,7 @@ #include #include +#include #include #include @@ -98,6 +99,7 @@ struct NodeFileSource : public mbgl::FileSource { NodeFileSource(NodeMap* nodeMap_) : nodeMap(nodeMap_) {} ~NodeFileSource() {} std::unique_ptr 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 830d262b4..0621940bb 100644 --- a/platform/node/src/node_request.hpp +++ b/platform/node/src/node_request.hpp @@ -6,8 +6,9 @@ #include #pragma GCC diagnostic pop -#include #include +#include +#include namespace node_mbgl {