diff options
author | Ander Conselvan de Oliveira <ander.deoliveira@mapbox.com> | 2019-02-22 09:31:21 +0200 |
---|---|---|
committer | Ander Conselvan de Oliveira <ander.deoliveira@mapbox.com> | 2019-03-13 11:58:27 +0200 |
commit | 7d1911572000d1353c1c0109402431323fcd8639 (patch) | |
tree | 4881a1e159415cd796e255bec951a7bb32b23ee8 /platform/node | |
parent | 565792606d5d03d0cc9889f112bb50345c899005 (diff) | |
download | qtlocation-mapboxgl-7d1911572000d1353c1c0109402431323fcd8639.tar.gz |
[core] Don't use exceptions in MapObserver::onDidFailLoadingMap
Using different exception pointers to specify the loading failure makes
an awkward API. Most users rethrow the exception only to figure out what
type of error happened so it can be reported properly. So replace the
exception pointer with a enum an string description of the failure.
Diffstat (limited to 'platform/node')
-rw-r--r-- | platform/node/src/node_map.cpp | 13 | ||||
-rw-r--r-- | platform/node/src/node_map.hpp | 2 |
2 files changed, 10 insertions, 5 deletions
diff --git a/platform/node/src/node_map.cpp b/platform/node/src/node_map.cpp index d56d71ab6b..2beab1833f 100644 --- a/platform/node/src/node_map.cpp +++ b/platform/node/src/node_map.cpp @@ -3,8 +3,6 @@ #include "node_feature.hpp" #include "node_conversion.hpp" -#include <mbgl/map/projection_mode.hpp> -#include <mbgl/util/exception.hpp> #include <mbgl/renderer/renderer.hpp> #include <mbgl/gl/headless_frontend.hpp> #include <mbgl/style/conversion/source.hpp> @@ -26,6 +24,7 @@ #include <mbgl/style/image.hpp> #include <mbgl/style/light.hpp> #include <mbgl/map/map_observer.hpp> +#include <mbgl/util/exception.hpp> #include <mbgl/util/premultiply.hpp> #include <unistd.h> @@ -54,8 +53,14 @@ static const char* releasedMessage() { return "Map resources have already been released"; } -void NodeMapObserver::onDidFailLoadingMap(std::exception_ptr error) { - std::rethrow_exception(error); +void NodeMapObserver::onDidFailLoadingMap(mbgl::MapLoadError error, const std::string& description) { + switch (error) { + case mbgl::MapLoadError::StyleParseError: + Nan::ThrowError(NodeMap::ParseError(description.c_str())); + break; + default: + Nan::ThrowError(description.c_str()); + } } void NodeMap::Init(v8::Local<v8::Object> target) { diff --git a/platform/node/src/node_map.hpp b/platform/node/src/node_map.hpp index 2214035b17..9e3eb1ad12 100644 --- a/platform/node/src/node_map.hpp +++ b/platform/node/src/node_map.hpp @@ -22,7 +22,7 @@ class HeadlessFrontend; namespace node_mbgl { class NodeMapObserver : public mbgl::MapObserver { - void onDidFailLoadingMap(std::exception_ptr) override; + void onDidFailLoadingMap(mbgl::MapLoadError, const std::string&) override; }; class NodeMap; |