From c21e0855e960ee8f3f252288f47a34040f5339e8 Mon Sep 17 00:00:00 2001 From: "Daniel J. Hofmann" Date: Wed, 17 Feb 2016 15:49:10 -0800 Subject: [PATCH] Service skeletons for nearest, trip, match --- include/server/service/base_service.hpp | 1 + include/server/service/match_service.hpp | 35 +++++++++++++++ include/server/service/nearest_service.hpp | 35 +++++++++++++++ include/server/service/route_service.hpp | 11 ++--- include/server/service/table_service.hpp | 11 ++--- include/server/service/trip_service.hpp | 35 +++++++++++++++ src/server/service/match_service.cpp | 26 +++++++++++ src/server/service/nearest_service.cpp | 26 +++++++++++ src/server/service/trip_service.cpp | 26 +++++++++++ src/server/service_handler.cpp | 52 ++++++++++++---------- 10 files changed, 225 insertions(+), 33 deletions(-) create mode 100644 include/server/service/match_service.hpp create mode 100644 include/server/service/nearest_service.hpp create mode 100644 include/server/service/trip_service.hpp create mode 100644 src/server/service/match_service.cpp create mode 100644 src/server/service/nearest_service.cpp create mode 100644 src/server/service/trip_service.cpp diff --git a/include/server/service/base_service.hpp b/include/server/service/base_service.hpp index 21d094941..90ff84648 100644 --- a/include/server/service/base_service.hpp +++ b/include/server/service/base_service.hpp @@ -24,6 +24,7 @@ class BaseService virtual engine::Status RunQuery(std::vector coordinates, std::string &options, util::json::Object &json_result) = 0; + virtual unsigned GetVersion() = 0; protected: diff --git a/include/server/service/match_service.hpp b/include/server/service/match_service.hpp new file mode 100644 index 000000000..e74275a57 --- /dev/null +++ b/include/server/service/match_service.hpp @@ -0,0 +1,35 @@ +#ifndef SERVER_SERVICE_MATCH_SERVICE_HPP +#define SERVER_SERVICE_MATCH_SERVICE_HPP + +#include "server/service/base_service.hpp" + +#include "engine/status.hpp" +#include "util/coordinate.hpp" +#include "osrm/osrm.hpp" + +#include +#include + +namespace osrm +{ +namespace server +{ +namespace service +{ + +class MatchService final : public BaseService +{ + public: + MatchService(OSRM &routing_machine) : BaseService(routing_machine) {} + + engine::Status RunQuery(std::vector coordinates, + std::string &options, + util::json::Object &result) final override; + + unsigned GetVersion() final override { return 1; } +}; +} +} +} + +#endif diff --git a/include/server/service/nearest_service.hpp b/include/server/service/nearest_service.hpp new file mode 100644 index 000000000..00e4a9119 --- /dev/null +++ b/include/server/service/nearest_service.hpp @@ -0,0 +1,35 @@ +#ifndef SERVER_SERVICE_NEAREST_SERVICE_HPP +#define SERVER_SERVICE_NEAREST_SERVICE_HPP + +#include "server/service/base_service.hpp" + +#include "engine/status.hpp" +#include "util/coordinate.hpp" +#include "osrm/osrm.hpp" + +#include +#include + +namespace osrm +{ +namespace server +{ +namespace service +{ + +class NearestService final : public BaseService +{ + public: + NearestService(OSRM &routing_machine) : BaseService(routing_machine) {} + + engine::Status RunQuery(std::vector coordinates, + std::string &options, + util::json::Object &result) final override; + + unsigned GetVersion() final override { return 1; } +}; +} +} +} + +#endif diff --git a/include/server/service/route_service.hpp b/include/server/service/route_service.hpp index 4993c8d8b..57fb1ab5c 100644 --- a/include/server/service/route_service.hpp +++ b/include/server/service/route_service.hpp @@ -20,12 +20,13 @@ namespace service class RouteService final : public BaseService { public: - RouteService(OSRM& routing_machine) : BaseService(routing_machine) {} + RouteService(OSRM &routing_machine) : BaseService(routing_machine) {} - virtual engine::Status RunQuery(std::vector coordinates, - std::string &options, - util::json::Object &json_result) final override; - virtual unsigned GetVersion() final override { return 1; } + engine::Status RunQuery(std::vector coordinates, + std::string &options, + util::json::Object &result) final override; + + unsigned GetVersion() final override { return 1; } }; } } diff --git a/include/server/service/table_service.hpp b/include/server/service/table_service.hpp index 898710456..9978702ed 100644 --- a/include/server/service/table_service.hpp +++ b/include/server/service/table_service.hpp @@ -20,12 +20,13 @@ namespace service class TableService final : public BaseService { public: - TableService(OSRM& routing_machine) : BaseService(routing_machine) {} + TableService(OSRM &routing_machine) : BaseService(routing_machine) {} - virtual engine::Status RunQuery(std::vector coordinates, - std::string &options, - util::json::Object &json_result) final override; - virtual unsigned GetVersion() final override { return 1; } + engine::Status RunQuery(std::vector coordinates, + std::string &options, + util::json::Object &result) final override; + + unsigned GetVersion() final override { return 1; } }; } } diff --git a/include/server/service/trip_service.hpp b/include/server/service/trip_service.hpp new file mode 100644 index 000000000..4af1121d5 --- /dev/null +++ b/include/server/service/trip_service.hpp @@ -0,0 +1,35 @@ +#ifndef SERVER_SERVICE_TRIP_SERVICE_HPP +#define SERVER_SERVICE_TRIP_SERVICE_HPP + +#include "server/service/base_service.hpp" + +#include "engine/status.hpp" +#include "util/coordinate.hpp" +#include "osrm/osrm.hpp" + +#include +#include + +namespace osrm +{ +namespace server +{ +namespace service +{ + +class TripService final : public BaseService +{ + public: + TripService(OSRM &routing_machine) : BaseService(routing_machine) {} + + engine::Status RunQuery(std::vector coordinates, + std::string &options, + util::json::Object &result) final override; + + unsigned GetVersion() final override { return 1; } +}; +} +} +} + +#endif diff --git a/src/server/service/match_service.cpp b/src/server/service/match_service.cpp new file mode 100644 index 000000000..d8233d8aa --- /dev/null +++ b/src/server/service/match_service.cpp @@ -0,0 +1,26 @@ +#include "server/service/match_service.hpp" + +#include "engine/api/match_parameters.hpp" +#include "server/api/parameters_parser.hpp" + +#include "util/json_container.hpp" + +#include + +namespace osrm +{ +namespace server +{ +namespace service +{ + +engine::Status RouteService::RunQuery(std::vector coordinates, + std::string &options, + util::json::Object &json_result) +{ + // TODO(daniel-j-h) + return Status::Error; +} +} +} +} diff --git a/src/server/service/nearest_service.cpp b/src/server/service/nearest_service.cpp new file mode 100644 index 000000000..f5e08d975 --- /dev/null +++ b/src/server/service/nearest_service.cpp @@ -0,0 +1,26 @@ +#include "server/service/nearest_service.hpp" + +#include "engine/api/nearest_parameters.hpp" +#include "server/api/parameters_parser.hpp" + +#include "util/json_container.hpp" + +#include + +namespace osrm +{ +namespace server +{ +namespace service +{ + +engine::Status RouteService::RunQuery(std::vector coordinates, + std::string &options, + util::json::Object &json_result) +{ + // TODO(daniel-j-h) + return Status::Error; +} +} +} +} diff --git a/src/server/service/trip_service.cpp b/src/server/service/trip_service.cpp new file mode 100644 index 000000000..2e01a4e88 --- /dev/null +++ b/src/server/service/trip_service.cpp @@ -0,0 +1,26 @@ +#include "server/service/trip_service.hpp" + +#include "engine/api/trip_parameters.hpp" +#include "server/api/parameters_parser.hpp" + +#include "util/json_container.hpp" + +#include + +namespace osrm +{ +namespace server +{ +namespace service +{ + +engine::Status RouteService::RunQuery(std::vector coordinates, + std::string &options, + util::json::Object &json_result) +{ + // TODO(daniel-j-h) + return Status::Error; +} +} +} +} diff --git a/src/server/service_handler.cpp b/src/server/service_handler.cpp index 6d2ade7e2..3e5ff7d7e 100644 --- a/src/server/service_handler.cpp +++ b/src/server/service_handler.cpp @@ -2,6 +2,9 @@ #include "server/service/route_service.hpp" #include "server/service/table_service.hpp" +#include "server/service/nearest_service.hpp" +#include "server/service/trip_service.hpp" +#include "server/service/match_service.hpp" #include "server/api/parsed_url.hpp" #include "util/json_util.hpp" @@ -11,31 +14,34 @@ namespace osrm { namespace server { - ServiceHandler::ServiceHandler(osrm::EngineConfig &config) : routing_machine(config) +ServiceHandler::ServiceHandler(osrm::EngineConfig &config) : routing_machine(config) +{ + service_map["route"] = util::make_unique(routing_machine); + service_map["table"] = util::make_unique(routing_machine); + service_map["nearest"] = util::make_unique(routing_machine); + service_map["trip"] = util::make_unique(routing_machine); + service_map["match"] = util::make_unique(routing_machine); +} + +engine::Status ServiceHandler::RunQuery(api::ParsedURL parsed_url, util::json::Object &result) +{ + const auto &service_iter = service_map.find(parsed_url.service); + if (service_iter == service_map.end()) { - service_map["route"] = util::make_unique(routing_machine); - service_map["table"] = util::make_unique(routing_machine); + result.values["code"] = "invalid-service"; + result.values["message"] = "Service " + parsed_url.service + " not found!"; + return engine::Status::Error; + } + auto &service = service_iter->second; + + if (service->GetVersion() != parsed_url.version) + { + result.values["code"] = "invalid-version"; + result.values["message"] = "Service " + parsed_url.service + " not found!"; + return engine::Status::Error; } - engine::Status ServiceHandler::RunQuery(api::ParsedURL parsed_url, util::json::Object &json_result) - { - const auto& service_iter = service_map.find(parsed_url.service); - if (service_iter == service_map.end()) - { - json_result.values["code"] = "invalid-service"; - json_result.values["message"] = "Service " + parsed_url.service + " not found!"; - return engine::Status::Error; - } - auto &service = service_iter->second; - - if (service->GetVersion() != parsed_url.version) - { - json_result.values["code"] = "invalid-version"; - json_result.values["message"] = "Service " + parsed_url.service + " not found!"; - return engine::Status::Error; - } - - return service->RunQuery(std::move(parsed_url.coordinates), parsed_url.options, json_result); - } + return service->RunQuery(std::move(parsed_url.coordinates), parsed_url.options, result); +} } }