From 4161181a6cd9a9c4a3f1f76c0dd02559ccc2314e Mon Sep 17 00:00:00 2001 From: Michael Krasnyk Date: Fri, 3 Feb 2017 16:53:31 +0100 Subject: [PATCH] revert watchdog singleton --- include/engine/engine.hpp | 2 ++ src/engine/engine.cpp | 40 +++++++++++++++++++++------------------ 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/include/engine/engine.hpp b/include/engine/engine.hpp index 8a429e699..f368fe2ac 100644 --- a/include/engine/engine.hpp +++ b/include/engine/engine.hpp @@ -49,6 +49,8 @@ class Engine final Status Tile(const api::TileParameters ¶meters, std::string &result) const; private: + std::unique_ptr watchdog; + const plugins::ViaRoutePlugin route_plugin; const plugins::TablePlugin table_plugin; const plugins::NearestPlugin nearest_plugin; diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 79647456f..be67348d3 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -18,28 +18,27 @@ namespace { - -auto GetWatchdogDataFacade() -{ - static osrm::engine::DataWatchdog watchdog; - return watchdog.GetDataFacade(); -} - // Abstracted away the query locking into a template function // Works the same for every plugin. template osrm::engine::Status -RunQuery(const std::shared_ptr &immutable_facade, +RunQuery(const std::unique_ptr &watchdog, + const std::shared_ptr &immutable_facade, const ParameterT ¶meters, PluginT &plugin, ResultT &result) { - if (immutable_facade) + if (watchdog) { - return plugin.HandleRequest(immutable_facade, parameters, result); + BOOST_ASSERT(!immutable_facade); + auto facade = watchdog->GetDataFacade(); + + return plugin.HandleRequest(facade, parameters, result); } - return plugin.HandleRequest(GetWatchdogDataFacade(), parameters, result); + BOOST_ASSERT(immutable_facade); + + return plugin.HandleRequest(immutable_facade, parameters, result); } } // anon. ns @@ -58,7 +57,12 @@ Engine::Engine(const EngineConfig &config) tile_plugin() // { - if (!config.use_shared_memory) + if (config.use_shared_memory) + { + watchdog = std::make_unique(); + BOOST_ASSERT(watchdog); + } + else { if (!config.storage_config.IsValid()) { @@ -74,32 +78,32 @@ Engine::Engine(const EngineConfig &config) Status Engine::Route(const api::RouteParameters ¶ms, util::json::Object &result) const { - return RunQuery(immutable_data_facade, params, route_plugin, result); + return RunQuery(watchdog, immutable_data_facade, params, route_plugin, result); } Status Engine::Table(const api::TableParameters ¶ms, util::json::Object &result) const { - return RunQuery(immutable_data_facade, params, table_plugin, result); + return RunQuery(watchdog, immutable_data_facade, params, table_plugin, result); } Status Engine::Nearest(const api::NearestParameters ¶ms, util::json::Object &result) const { - return RunQuery(immutable_data_facade, params, nearest_plugin, result); + return RunQuery(watchdog, immutable_data_facade, params, nearest_plugin, result); } Status Engine::Trip(const api::TripParameters ¶ms, util::json::Object &result) const { - return RunQuery(immutable_data_facade, params, trip_plugin, result); + return RunQuery(watchdog, immutable_data_facade, params, trip_plugin, result); } Status Engine::Match(const api::MatchParameters ¶ms, util::json::Object &result) const { - return RunQuery(immutable_data_facade, params, match_plugin, result); + return RunQuery(watchdog, immutable_data_facade, params, match_plugin, result); } Status Engine::Tile(const api::TileParameters ¶ms, std::string &result) const { - return RunQuery(immutable_data_facade, params, tile_plugin, result); + return RunQuery(watchdog, immutable_data_facade, params, tile_plugin, result); } } // engine ns