summaryrefslogtreecommitdiff
path: root/platform/node
diff options
context:
space:
mode:
authorAnder Conselvan de Oliveira <ander.deoliveira@mapbox.com>2019-02-22 09:31:21 +0200
committerAnder Conselvan de Oliveira <ander.deoliveira@mapbox.com>2019-03-13 11:58:27 +0200
commit7d1911572000d1353c1c0109402431323fcd8639 (patch)
tree4881a1e159415cd796e255bec951a7bb32b23ee8 /platform/node
parent565792606d5d03d0cc9889f112bb50345c899005 (diff)
downloadqtlocation-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.cpp13
-rw-r--r--platform/node/src/node_map.hpp2
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;