[node] Handle tiles which 404 better

This commit is contained in:
bsudekum
2015-09-29 14:45:38 -07:00
committed by John Firebaugh
parent c958ee45ab
commit 7112d43609
4 changed files with 16 additions and 2 deletions

View File

@@ -7,7 +7,7 @@ namespace mbgl {
class Response {
public:
enum Status : bool { Error, Successful };
enum Status { Error, Successful, NotFound };
Status status = Error;
std::string message;

View File

@@ -64,7 +64,9 @@ NAN_METHOD(NodeRequest::Respond) {
auto resource = std::move(nodeRequest->resource);
if (info.Length() < 1) {
return Nan::ThrowTypeError("First argument must be an error object");
auto response = std::make_shared<mbgl::Response>();
response->status = mbgl::Response::NotFound;
source->notify(*resource, response);
} else if (info[0]->BooleanValue()) {
auto response = std::make_shared<mbgl::Response>();

View File

@@ -33,6 +33,12 @@ void RasterTileData::request(float pixelRatio,
req = fs->request({ Resource::Kind::Tile, url }, util::RunLoop::getLoop(), [url, callback, this](const Response &res) {
req = nullptr;
if (res.status == Response::NotFound) {
state = State::parsed;
callback();
return;
}
if (res.status != Response::Successful) {
std::stringstream message;
message << "Failed to load [" << url << "]: " << res.message;

View File

@@ -44,6 +44,12 @@ void VectorTileData::request(float pixelRatio, const std::function<void()>& call
req = fs->request({ Resource::Kind::Tile, url }, util::RunLoop::getLoop(), [url, callback, this](const Response &res) {
req = nullptr;
if (res.status == Response::NotFound) {
state = State::parsed;
callback();
return;
}
if (res.status != Response::Successful) {
std::stringstream message;
message << "Failed to load [" << url << "]: " << res.message;