diff options
author | Lev Dragunov <l.dragunov@corp.mail.ru> | 2016-03-25 16:22:07 +0300 |
---|---|---|
committer | Lev Dragunov <l.dragunov@corp.mail.ru> | 2016-03-25 16:22:07 +0300 |
commit | 2111d130c4ff598dedf8062c42db6da4d0841e97 (patch) | |
tree | a845b663f4a582ac732bb46396203bf84739417a /3party | |
parent | 13b59d57bf67b82c27945f02a56ccc1407668201 (diff) |
Osrm routed memory consumption fix.
Diffstat (limited to '3party')
-rwxr-xr-x | 3party/osrm/osrm-backend/library/osrm_impl.cpp | 10 | ||||
-rwxr-xr-x | 3party/osrm/osrm-backend/library/osrm_impl.hpp | 3 | ||||
-rw-r--r-- | 3party/osrm/osrm-backend/plugins/MapsMePlugin.hpp | 12 | ||||
-rw-r--r-- | 3party/osrm/osrm-backend/plugins/WayIdPlugin.hpp | 11 |
4 files changed, 18 insertions, 18 deletions
diff --git a/3party/osrm/osrm-backend/library/osrm_impl.cpp b/3party/osrm/osrm-backend/library/osrm_impl.cpp index b3fe280f0d..aa270efcde 100755 --- a/3party/osrm/osrm-backend/library/osrm_impl.cpp +++ b/3party/osrm/osrm-backend/library/osrm_impl.cpp @@ -79,6 +79,12 @@ OSRM_impl::OSRM_impl(libosrm_config &lib_config) query_data_facade = new InternalDataFacade<QueryEdge::EdgeData>(lib_config.server_paths); } + if (!osrm::LoadNodeDataFromFile(lib_config.server_paths["enodesdata"].string(), m_nodeData)) + { + SimpleLogger().Write(logDEBUG) << "Can't load node data"; + return; + } + // The following plugins handle all requests. RegisterPlugin(new DistanceTablePlugin<BaseDataFacade<QueryEdge::EdgeData>>( query_data_facade, lib_config.max_locations_distance_table)); @@ -90,8 +96,8 @@ OSRM_impl::OSRM_impl(libosrm_config &lib_config) RegisterPlugin(new TimestampPlugin<BaseDataFacade<QueryEdge::EdgeData>>(query_data_facade)); RegisterPlugin(new ViaRoutePlugin<BaseDataFacade<QueryEdge::EdgeData>>(query_data_facade)); RegisterPlugin(new MapsMePlugin<BaseDataFacade<QueryEdge::EdgeData>>( - query_data_facade, lib_config.server_paths["borders"].string(), lib_config.server_paths["enodesdata"].string())); - RegisterPlugin(new WayIdPlugin<BaseDataFacade<QueryEdge::EdgeData>>(query_data_facade, lib_config.server_paths["enodesdata"].string())); + query_data_facade, lib_config.server_paths["borders"].string(), m_nodeData)); + RegisterPlugin(new WayIdPlugin<BaseDataFacade<QueryEdge::EdgeData>>(query_data_facade, m_nodeData)); } OSRM_impl::~OSRM_impl() diff --git a/3party/osrm/osrm-backend/library/osrm_impl.hpp b/3party/osrm/osrm-backend/library/osrm_impl.hpp index a736c042f6..4ec09796dd 100755 --- a/3party/osrm/osrm-backend/library/osrm_impl.hpp +++ b/3party/osrm/osrm-backend/library/osrm_impl.hpp @@ -31,6 +31,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. class BasePlugin; struct RouteParameters; +#include "../data_structures/edge_based_node_data.hpp" #include "../data_structures/query_edge.hpp" #include <osrm/json_container.hpp> @@ -66,6 +67,8 @@ class OSRM_impl void decrease_concurrent_query_count(); // increase number of concurrent queries void increase_concurrent_query_count(); + + osrm::NodeDataVectorT m_nodeData; }; #endif // OSRM_IMPL_HPP diff --git a/3party/osrm/osrm-backend/plugins/MapsMePlugin.hpp b/3party/osrm/osrm-backend/plugins/MapsMePlugin.hpp index 4cb6e5d05b..3921b8ca69 100644 --- a/3party/osrm/osrm-backend/plugins/MapsMePlugin.hpp +++ b/3party/osrm/osrm-backend/plugins/MapsMePlugin.hpp @@ -115,18 +115,14 @@ template <class DataFacadeT> class MapsMePlugin final : public BasePlugin }; public: - explicit MapsMePlugin(DataFacadeT *facade, std::string const &baseDir, std::string const & nodeDataFile) + explicit MapsMePlugin(DataFacadeT *facade, std::string const &baseDir, osrm::NodeDataVectorT const & nodeData) : m_descriptorString("mapsme"), m_facade(facade), - m_reader(baseDir + '/' + PACKED_POLYGONS_FILE) + m_reader(baseDir + '/' + PACKED_POLYGONS_FILE), + m_nodeData(nodeData) { #ifndef MT_STRUCTURES SimpleLogger().Write(logWARNING) << "Multitreaded storage was not set on compile time!!! Do not use osrm-routed in several threads." #endif - if (!osrm::LoadNodeDataFromFile(nodeDataFile, m_nodeData)) - { - SimpleLogger().Write(logDEBUG) << "Can't load node data"; - return; - } ReaderSource<ModelReaderPtr> src(m_reader.GetReader(PACKED_POLYGONS_INFO_TAG)); rw::Read(src, m_countries); m_regions.resize(m_countries.size()); @@ -291,5 +287,5 @@ public: std::string m_descriptorString; DataFacadeT * m_facade; FilesContainerR m_reader; - osrm::NodeDataVectorT m_nodeData; + osrm::NodeDataVectorT const & m_nodeData; }; diff --git a/3party/osrm/osrm-backend/plugins/WayIdPlugin.hpp b/3party/osrm/osrm-backend/plugins/WayIdPlugin.hpp index 308530909a..3a1ea08157 100644 --- a/3party/osrm/osrm-backend/plugins/WayIdPlugin.hpp +++ b/3party/osrm/osrm-backend/plugins/WayIdPlugin.hpp @@ -25,18 +25,13 @@ template <class DataFacadeT> class WayIdPlugin final : public BasePlugin { public: - WayIdPlugin(DataFacadeT * facade, std::string const & nodeDataFile) - : m_descriptorString("wayid"), m_facade(facade) + WayIdPlugin(DataFacadeT * facade, osrm::NodeDataVectorT const & nodeData) + : m_descriptorString("wayid"), m_facade(facade), m_nodeData(nodeData) { #ifndef MT_STRUCTURES SimpleLogger().Write(logWARNING) << "Multitreaded storage was not set on compile time!!! Do " "not use osrm-routed in several threads." #endif - if (!osrm::LoadNodeDataFromFile(nodeDataFile, m_nodeData)) - { - SimpleLogger().Write(logDEBUG) << "Can't load node data"; - return; - } m_searchEngine = osrm::make_unique<SearchEngine<DataFacadeT>>(facade); } @@ -161,5 +156,5 @@ private: std::unique_ptr<SearchEngine<DataFacadeT>> m_searchEngine; std::string m_descriptorString; DataFacadeT * m_facade; - osrm::NodeDataVectorT m_nodeData; + osrm::NodeDataVectorT const & m_nodeData; }; |