virtual void MakeResponse(const std::vector<EdgeWeight> &durations, const std::vector<PhantomNode> &phantoms, util::json::Object &response) const { auto number_of_sources = parameters.sources.size(); auto number_of_destinations = parameters.destinations.size(); ; // symmetric case if (parameters.sources.empty()) { response.values["sources"] = MakeWaypoints(phantoms); number_of_sources = phantoms.size(); } else { response.values["sources"] = MakeWaypoints(phantoms, parameters.sources); } if (parameters.destinations.empty()) { response.values["destinations"] = MakeWaypoints(phantoms); number_of_destinations = phantoms.size(); } else { response.values["destinations"] = MakeWaypoints(phantoms, parameters.destinations); } response.values["durations"] = MakeTable(durations, number_of_sources, number_of_destinations); response.values["code"] = "Ok"; }
virtual void MakeResponse(const std::pair<std::vector<EdgeDuration>, std::vector<EdgeDistance>> &tables, const std::vector<PhantomNode> &phantoms, const std::vector<TableCellRef> &fallback_speed_cells, util::json::Object &response) const { auto number_of_sources = parameters.sources.size(); auto number_of_destinations = parameters.destinations.size(); // symmetric case if (parameters.sources.empty()) { response.values["sources"] = MakeWaypoints(phantoms); number_of_sources = phantoms.size(); } else { response.values["sources"] = MakeWaypoints(phantoms, parameters.sources); } if (parameters.destinations.empty()) { response.values["destinations"] = MakeWaypoints(phantoms); number_of_destinations = phantoms.size(); } else { response.values["destinations"] = MakeWaypoints(phantoms, parameters.destinations); } if (parameters.annotations & TableParameters::AnnotationsType::Duration) { response.values["durations"] = MakeDurationTable(tables.first, number_of_sources, number_of_destinations); } if (parameters.annotations & TableParameters::AnnotationsType::Distance) { response.values["distances"] = MakeDistanceTable(tables.second, number_of_sources, number_of_destinations); } if (parameters.fallback_speed != INVALID_FALLBACK_SPEED && parameters.fallback_speed > 0) { response.values["fallback_speed_cells"] = MakeEstimatesTable(fallback_speed_cells); } response.values["code"] = "Ok"; }