From 0765ebf7355b0c4d70ca88f0dc78452dc84ede6c Mon Sep 17 00:00:00 2001 From: Dennis Luxen Date: Fri, 9 Aug 2013 14:47:09 +0200 Subject: [PATCH] Implements #692 --- DataStructures/NodeInformationHelpDesk.h | 19 ++++++++++++++++--- Library/OSRM.cpp | 16 ++++++++++++++++ Server/DataStructures/QueryObjectsStorage.cpp | 19 +++++++++++++++++++ Util/IniFile.h | 6 +++++- 4 files changed, 56 insertions(+), 4 deletions(-) diff --git a/DataStructures/NodeInformationHelpDesk.h b/DataStructures/NodeInformationHelpDesk.h index 37bead56f..d0721d03f 100644 --- a/DataStructures/NodeInformationHelpDesk.h +++ b/DataStructures/NodeInformationHelpDesk.h @@ -38,7 +38,7 @@ or see http://www.gnu.org/licenses/agpl.txt. typedef EdgeBasedGraphFactory::EdgeBasedNode RTreeLeaf; -class NodeInformationHelpDesk : boost::noncopyable{ +class NodeInformationHelpDesk : boost::noncopyable { public: NodeInformationHelpDesk( const std::string & ramIndexInput, @@ -47,8 +47,21 @@ public: const std::string & edges_filename, const unsigned number_of_nodes, const unsigned check_sum - ) : number_of_nodes(number_of_nodes), check_sum(check_sum) + ) : number_of_nodes(number_of_nodes), check_sum(check_sum) { + if ( "" == ramIndexInput ) { + throw OSRMException("no ram index file name in server ini"); + } + if ( "" == fileIndexInput ) { + throw OSRMException("no mem index file name in server ini"); + } + if ( "" == nodes_filename ) { + throw OSRMException("no nodes file name in server ini"); + } + if ( "" == edges_filename ) { + throw OSRMException("no edges file name in server ini"); + } + read_only_rtree = new StaticRTree( ramIndexInput, fileIndexInput @@ -136,7 +149,7 @@ private: throw OSRMException("edges file not found"); } - SimpleLogger().Write(logDEBUG) << "Loading node data"; + SimpleLogger().Write(logDEBUG) << "Loading node data" << nodes_file.length() << " ->" << nodes_file << "<-"; NodeInfo b; while(!nodes_input_stream.eof()) { nodes_input_stream.read((char *)&b, sizeof(NodeInfo)); diff --git a/Library/OSRM.cpp b/Library/OSRM.cpp index 629e43978..3a60cb6b5 100644 --- a/Library/OSRM.cpp +++ b/Library/OSRM.cpp @@ -30,6 +30,22 @@ OSRM::OSRM(const char * server_ini_path) { boost::filesystem::path base_path = boost::filesystem::absolute(server_ini_path).parent_path(); + if ( !serverConfig.Holds("hsgrData")) { + throw OSRMException("no ram index file name in server ini"); + } + if ( !serverConfig.Holds("ramIndex") ) { + throw OSRMException("no mem index file name in server ini"); + } + if ( !serverConfig.Holds("fileIndex") ) { + throw OSRMException("no nodes file name in server ini"); + } + if ( !serverConfig.Holds("nodesData") ) { + throw OSRMException("no nodes file name in server ini"); + } + if ( !serverConfig.Holds("edgesData") ) { + throw OSRMException("no edges file name in server ini"); + } + boost::filesystem::path hsgr_path = boost::filesystem::absolute( serverConfig.GetParameter("hsgrData"), base_path diff --git a/Server/DataStructures/QueryObjectsStorage.cpp b/Server/DataStructures/QueryObjectsStorage.cpp index 9373a5f9e..258071e91 100644 --- a/Server/DataStructures/QueryObjectsStorage.cpp +++ b/Server/DataStructures/QueryObjectsStorage.cpp @@ -30,6 +30,25 @@ QueryObjectsStorage::QueryObjectsStorage( const std::string & namesPath, const std::string & timestampPath ) { + if("" == hsgrPath) { + throw OSRMException("no hsgr file given in ini file"); + } + if("" == ramIndexPath) { + throw OSRMException("no ram index file given in ini file"); + } + if("" == fileIndexPath) { + throw OSRMException("no mem index file given in ini file"); + } + if("" == nodesPath) { + throw OSRMException("no nodes file given in ini file"); + } + if("" == edgesPath) { + throw OSRMException("no edges file given in ini file"); + } + if("" == namesPath) { + throw OSRMException("no names file given in ini file"); + } + SimpleLogger().Write() << "loading graph data"; std::ifstream hsgrInStream(hsgrPath.c_str(), std::ios::binary); if(!hsgrInStream) { diff --git a/Util/IniFile.h b/Util/IniFile.h index 26a9ed6c8..aa5c4b9c2 100644 --- a/Util/IniFile.h +++ b/Util/IniFile.h @@ -54,7 +54,11 @@ public: } std::string GetParameter(const std::string & key){ - return parameters.Find(key); + return parameters.Find(key); + } + + bool Holds(const std::string & key) const { + return parameters.Holds(key); } void SetParameter(const char* key, const char* value) {