Fix handling unexpected errors.
This commit is contained in:
parent
f1140ec903
commit
88e6558da3
@ -164,28 +164,9 @@ template <class DataFacadeT> class ViaRoutePlugin final : public BasePlugin
|
|||||||
route_parameters.uturns, raw_route);
|
route_parameters.uturns, raw_route);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool no_route = INVALID_EDGE_WEIGHT == raw_route.shortest_path_length;
|
|
||||||
|
|
||||||
std::unique_ptr<BaseDescriptor<DataFacadeT>> descriptor;
|
|
||||||
switch (descriptor_table.get_id(route_parameters.output_format))
|
|
||||||
{
|
|
||||||
case 1:
|
|
||||||
descriptor = osrm::make_unique<GPXDescriptor<DataFacadeT>>(facade);
|
|
||||||
break;
|
|
||||||
// case 2:
|
|
||||||
// descriptor = osrm::make_unique<GEOJSONDescriptor<DataFacadeT>>();
|
|
||||||
// break;
|
|
||||||
default:
|
|
||||||
descriptor = osrm::make_unique<JSONDescriptor<DataFacadeT>>(facade);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
descriptor->SetConfig(route_parameters);
|
|
||||||
descriptor->Run(raw_route, json_result);
|
|
||||||
|
|
||||||
// we can only know this after the fact, different SCC ids still
|
// we can only know this after the fact, different SCC ids still
|
||||||
// allow for connection in one direction.
|
// allow for connection in one direction.
|
||||||
if (no_route)
|
if (raw_route.shortest_path_length == INVALID_EDGE_WEIGHT)
|
||||||
{
|
{
|
||||||
auto first_component_id = snapped_phantoms.front().component.id;
|
auto first_component_id = snapped_phantoms.front().component.id;
|
||||||
auto not_in_same_component =
|
auto not_in_same_component =
|
||||||
@ -194,14 +175,36 @@ template <class DataFacadeT> class ViaRoutePlugin final : public BasePlugin
|
|||||||
{
|
{
|
||||||
return node.component.id != first_component_id;
|
return node.component.id != first_component_id;
|
||||||
});
|
});
|
||||||
|
|
||||||
if (not_in_same_component)
|
if (not_in_same_component)
|
||||||
{
|
{
|
||||||
json_result.values["status_message"] = "Impossible route between points";
|
json_result.values["status_message"] = "Impossible route between points";
|
||||||
return Status::EmptyResult;
|
return Status::EmptyResult;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
json_result.values["status_message"] = "No route found between points";
|
||||||
|
return Status::Error;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
std::unique_ptr<BaseDescriptor<DataFacadeT>> descriptor;
|
||||||
|
switch (descriptor_table.get_id(route_parameters.output_format))
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
descriptor = osrm::make_unique<GPXDescriptor<DataFacadeT>>(facade);
|
||||||
|
break;
|
||||||
|
// case 2:
|
||||||
|
// descriptor = osrm::make_unique<GEOJSONDescriptor<DataFacadeT>>();
|
||||||
|
// break;
|
||||||
|
default:
|
||||||
|
descriptor = osrm::make_unique<JSONDescriptor<DataFacadeT>>(facade);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
descriptor->SetConfig(route_parameters);
|
||||||
|
descriptor->Run(raw_route, json_result);
|
||||||
json_result.values["status_message"] = "Found route between points";
|
json_result.values["status_message"] = "Found route between points";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user