diff --git a/routing/routes_builder/routes_builder_tool/routes_builder_tool.cpp b/routing/routes_builder/routes_builder_tool/routes_builder_tool.cpp index e707605ace..7f06aeec4e 100644 --- a/routing/routes_builder/routes_builder_tool/routes_builder_tool.cpp +++ b/routing/routes_builder/routes_builder_tool/routes_builder_tool.cpp @@ -40,6 +40,7 @@ DEFINE_int32(timeout, 10 * 60, "Timeout in seconds for each route building. " DEFINE_bool(verbose, false, "Verbose logging (default: false)"); DEFINE_int32(launches_number, 1, "Number of launches of routes buildings. Needs for benchmarking (default: 1)"); +DEFINE_string(vehicle_type, "car", "Vehicle type: car|pedestrian|bicycle|transit. (Only for mapsme)."); using namespace routing; using namespace routes_builder; @@ -107,7 +108,7 @@ int Main(int argc, char ** argv) } BuildRoutes(FLAGS_routes_file, FLAGS_dump_path, FLAGS_start_from, FLAGS_threads, FLAGS_timeout, - FLAGS_verbose, launchesNumber); + FLAGS_vehicle_type, FLAGS_verbose, launchesNumber); } if (IsApiBuild()) diff --git a/routing/routes_builder/routes_builder_tool/utils.cpp b/routing/routes_builder/routes_builder_tool/utils.cpp index c12ac18a32..22d3f4cfbc 100644 --- a/routing/routes_builder/routes_builder_tool/utils.cpp +++ b/routing/routes_builder/routes_builder_tool/utils.cpp @@ -42,6 +42,21 @@ size_t GetNumberOfLines(std::string const & filename) return count; } + +routing::VehicleType ConvertVehicleTypeFromString(std::string const & str) +{ + if (str == "car") + return routing::VehicleType::Car; + if (str == "pedestrian") + return routing::VehicleType::Pedestrian; + if (str == "bicycle") + return routing::VehicleType::Bicycle; + if (str == "transit") + return routing::VehicleType::Transit; + + CHECK(false, ("Unknown vehicle type:", str)); + UNREACHABLE(); +} } // namespace namespace routing @@ -53,6 +68,7 @@ void BuildRoutes(std::string const & routesPath, uint64_t startFrom, uint64_t threadsNumber, uint32_t timeoutPerRouteSeconds, + std::string const & vehicleTypeStr, bool verbose, uint32_t launchesNumber) { @@ -73,9 +89,10 @@ void BuildRoutes(std::string const & routesPath, std::vector> tasks; double lastPercent = 0.0; + auto const vehicleType = ConvertVehicleTypeFromString(vehicleTypeStr); { RoutesBuilder::Params params; - params.m_type = VehicleType::Car; + params.m_type = vehicleType; params.m_timeoutSeconds = timeoutPerRouteSeconds; params.m_launchesNumber = launchesNumber; @@ -98,7 +115,7 @@ void BuildRoutes(std::string const & routesPath, tasks.emplace_back(routesBuilder.ProcessTaskAsync(params)); } - LOG_FORCE(LINFO, ("Created:", tasks.size(), "tasks")); + LOG_FORCE(LINFO, ("Created:", tasks.size(), "tasks, vehicle type:", vehicleType)); base::Timer timer; for (size_t i = 0; i < tasks.size(); ++i) { diff --git a/routing/routes_builder/routes_builder_tool/utils.hpp b/routing/routes_builder/routes_builder_tool/utils.hpp index 10fc02476f..9d2de48fbc 100644 --- a/routing/routes_builder/routes_builder_tool/utils.hpp +++ b/routing/routes_builder/routes_builder_tool/utils.hpp @@ -18,6 +18,7 @@ void BuildRoutes(std::string const & routesPath, uint64_t startFrom, uint64_t threadsNumber, uint32_t timeoutPerRouteSeconds, + std::string const & vehicleType, bool verbose, uint32_t launchesNumber);