Merge pull request #5513 from akashihi/flatbuffers

Flatbuffers support added
This commit is contained in:
Lev Dragunov
2019-08-29 13:11:24 +03:00
committed by GitHub
676 changed files with 135336 additions and 489 deletions
+11
View File
@@ -110,6 +110,17 @@ void RequestHandler::HandleRequest(const http::request &current_request, http::r
util::json::render(current_reply.content, result.get<util::json::Object>());
}
else if (result.is<flatbuffers::FlatBufferBuilder>())
{
auto &buffer = result.get<flatbuffers::FlatBufferBuilder>();
current_reply.content.resize(buffer.GetSize());
std::copy(buffer.GetBufferPointer(),
buffer.GetBufferPointer() + buffer.GetSize(),
current_reply.content.begin());
current_reply.headers.emplace_back(
"Content-Type", "application/x-flatbuffers;schema=osrm.engine.api.fbresult");
}
else
{
BOOST_ASSERT(result.is<std::string>());
+11 -3
View File
@@ -41,8 +41,9 @@ std::string getWrongOptionHelp(const engine::api::MatchParameters &parameters)
}
} // anon. ns
engine::Status
MatchService::RunQuery(std::size_t prefix_length, std::string &query, ResultT &result)
engine::Status MatchService::RunQuery(std::size_t prefix_length,
std::string &query,
osrm::engine::api::ResultT &result)
{
result = util::json::Object();
auto &json_result = result.get<util::json::Object>();
@@ -68,7 +69,14 @@ MatchService::RunQuery(std::size_t prefix_length, std::string &query, ResultT &r
}
BOOST_ASSERT(parameters->IsValid());
return BaseService::routing_machine.Match(*parameters, json_result);
if (parameters->format)
{
if (parameters->format == engine::api::BaseParameters::OutputFormatType::FLATBUFFERS)
{
result = flatbuffers::FlatBufferBuilder();
}
}
return BaseService::routing_machine.Match(*parameters, result);
}
}
}
+11 -3
View File
@@ -35,8 +35,9 @@ std::string getWrongOptionHelp(const engine::api::NearestParameters &parameters)
}
} // anon. ns
engine::Status
NearestService::RunQuery(std::size_t prefix_length, std::string &query, ResultT &result)
engine::Status NearestService::RunQuery(std::size_t prefix_length,
std::string &query,
osrm::engine::api::ResultT &result)
{
result = util::json::Object();
auto &json_result = result.get<util::json::Object>();
@@ -62,7 +63,14 @@ NearestService::RunQuery(std::size_t prefix_length, std::string &query, ResultT
}
BOOST_ASSERT(parameters->IsValid());
return BaseService::routing_machine.Nearest(*parameters, json_result);
if (parameters->format)
{
if (parameters->format == engine::api::BaseParameters::OutputFormatType::FLATBUFFERS)
{
result = flatbuffers::FlatBufferBuilder();
}
}
return BaseService::routing_machine.Nearest(*parameters, result);
}
}
}
+11 -3
View File
@@ -39,8 +39,9 @@ std::string getWrongOptionHelp(const engine::api::RouteParameters &parameters)
}
} // anon. ns
engine::Status
RouteService::RunQuery(std::size_t prefix_length, std::string &query, ResultT &result)
engine::Status RouteService::RunQuery(std::size_t prefix_length,
std::string &query,
osrm::engine::api::ResultT &result)
{
result = util::json::Object();
auto &json_result = result.get<util::json::Object>();
@@ -66,7 +67,14 @@ RouteService::RunQuery(std::size_t prefix_length, std::string &query, ResultT &r
}
BOOST_ASSERT(parameters->IsValid());
return BaseService::routing_machine.Route(*parameters, json_result);
if (parameters->format)
{
if (parameters->format == engine::api::BaseParameters::OutputFormatType::FLATBUFFERS)
{
result = flatbuffers::FlatBufferBuilder();
}
}
return BaseService::routing_machine.Route(*parameters, result);
}
}
}
+11 -3
View File
@@ -70,8 +70,9 @@ std::string getWrongOptionHelp(const engine::api::TableParameters &parameters)
}
} // anon. ns
engine::Status
TableService::RunQuery(std::size_t prefix_length, std::string &query, ResultT &result)
engine::Status TableService::RunQuery(std::size_t prefix_length,
std::string &query,
osrm::engine::api::ResultT &result)
{
result = util::json::Object();
auto &json_result = result.get<util::json::Object>();
@@ -97,7 +98,14 @@ TableService::RunQuery(std::size_t prefix_length, std::string &query, ResultT &r
}
BOOST_ASSERT(parameters->IsValid());
return BaseService::routing_machine.Table(*parameters, json_result);
if (parameters->format)
{
if (parameters->format == engine::api::BaseParameters::OutputFormatType::FLATBUFFERS)
{
result = flatbuffers::FlatBufferBuilder();
}
}
return BaseService::routing_machine.Table(*parameters, result);
}
}
}
+4 -3
View File
@@ -15,7 +15,9 @@ namespace server
namespace service
{
engine::Status TileService::RunQuery(std::size_t prefix_length, std::string &query, ResultT &result)
engine::Status TileService::RunQuery(std::size_t prefix_length,
std::string &query,
osrm::engine::api::ResultT &result)
{
auto query_iterator = query.begin();
auto parameters =
@@ -43,8 +45,7 @@ engine::Status TileService::RunQuery(std::size_t prefix_length, std::string &que
BOOST_ASSERT(parameters->IsValid());
result = std::string();
auto &string_result = result.get<std::string>();
return BaseService::routing_machine.Tile(*parameters, string_result);
return BaseService::routing_machine.Tile(*parameters, result);
}
}
}
+11 -2
View File
@@ -41,7 +41,9 @@ std::string getWrongOptionHelp(const engine::api::TripParameters &parameters)
}
} // anon. ns
engine::Status TripService::RunQuery(std::size_t prefix_length, std::string &query, ResultT &result)
engine::Status TripService::RunQuery(std::size_t prefix_length,
std::string &query,
osrm::engine::api::ResultT &result)
{
result = util::json::Object();
auto &json_result = result.get<util::json::Object>();
@@ -69,7 +71,14 @@ engine::Status TripService::RunQuery(std::size_t prefix_length, std::string &que
}
BOOST_ASSERT(parameters->IsValid());
return BaseService::routing_machine.Trip(*parameters, json_result);
if (parameters->format)
{
if (parameters->format == engine::api::BaseParameters::OutputFormatType::FLATBUFFERS)
{
result = flatbuffers::FlatBufferBuilder();
}
}
return BaseService::routing_machine.Trip(*parameters, result);
}
}
}
+1 -1
View File
@@ -27,7 +27,7 @@ ServiceHandler::ServiceHandler(osrm::EngineConfig &config) : routing_machine(con
}
engine::Status ServiceHandler::RunQuery(api::ParsedURL parsed_url,
service::BaseService::ResultT &result)
osrm::engine::api::ResultT &result)
{
const auto &service_iter = service_map.find(parsed_url.service);
if (service_iter == service_map.end())