instantiate different inherited class at bcp that provides all data
This commit is contained in:
parent
1e5c4b0d79
commit
66d58bf047
163
Library/OSRM.cpp
163
Library/OSRM.cpp
@ -20,80 +20,97 @@ or see http://www.gnu.org/licenses/agpl.txt.
|
|||||||
|
|
||||||
#include "OSRM.h"
|
#include "OSRM.h"
|
||||||
|
|
||||||
OSRM::OSRM(const char * server_ini_path) {
|
OSRM::OSRM(const char * server_ini_path, const bool use_shared_memory)
|
||||||
if( !testDataFile(server_ini_path) ){
|
: use_shared_memory(use_shared_memory)
|
||||||
std::string error_message = std::string(server_ini_path) + " not found";
|
{
|
||||||
throw OSRMException(error_message.c_str());
|
if( !use_shared_memory ) {
|
||||||
|
if( !testDataFile(server_ini_path) ){
|
||||||
|
std::string error_message = std::string(server_ini_path) + " not found";
|
||||||
|
throw OSRMException(error_message.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
IniFile serverConfig(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
|
||||||
|
);
|
||||||
|
|
||||||
|
boost::filesystem::path ram_index_path = boost::filesystem::absolute(
|
||||||
|
serverConfig.GetParameter("ramIndex"),
|
||||||
|
base_path
|
||||||
|
);
|
||||||
|
|
||||||
|
boost::filesystem::path file_index_path = boost::filesystem::absolute(
|
||||||
|
serverConfig.GetParameter("fileIndex"),
|
||||||
|
base_path
|
||||||
|
);
|
||||||
|
|
||||||
|
boost::filesystem::path node_data_path = boost::filesystem::absolute(
|
||||||
|
serverConfig.GetParameter("nodesData"),
|
||||||
|
base_path
|
||||||
|
);
|
||||||
|
boost::filesystem::path edge_data_path = boost::filesystem::absolute(
|
||||||
|
serverConfig.GetParameter("edgesData"),
|
||||||
|
base_path
|
||||||
|
);
|
||||||
|
boost::filesystem::path name_data_path = boost::filesystem::absolute(
|
||||||
|
serverConfig.GetParameter("namesData"),
|
||||||
|
base_path
|
||||||
|
);
|
||||||
|
boost::filesystem::path timestamp_path = boost::filesystem::absolute(
|
||||||
|
serverConfig.GetParameter("timestamp"),
|
||||||
|
base_path
|
||||||
|
);
|
||||||
|
|
||||||
|
objects = new QueryObjectsStorage(
|
||||||
|
hsgr_path.string(),
|
||||||
|
ram_index_path.string(),
|
||||||
|
file_index_path.string(),
|
||||||
|
node_data_path.string(),
|
||||||
|
edge_data_path.string(),
|
||||||
|
name_data_path.string(),
|
||||||
|
timestamp_path.string()
|
||||||
|
);
|
||||||
|
|
||||||
|
RegisterPlugin(new HelloWorldPlugin());
|
||||||
|
RegisterPlugin(new LocatePlugin(objects));
|
||||||
|
RegisterPlugin(new NearestPlugin(objects));
|
||||||
|
RegisterPlugin(new TimestampPlugin(objects));
|
||||||
|
RegisterPlugin(new ViaRoutePlugin(objects));
|
||||||
|
|
||||||
|
} else {
|
||||||
|
//TODO: fetch pointers from shared memory
|
||||||
|
|
||||||
|
//TODO: objects = new QueryObjectsStorage()
|
||||||
|
|
||||||
|
//TODO: generate shared memory plugins
|
||||||
|
RegisterPlugin(new HelloWorldPlugin());
|
||||||
|
RegisterPlugin(new LocatePlugin(objects));
|
||||||
|
RegisterPlugin(new NearestPlugin(objects));
|
||||||
|
RegisterPlugin(new TimestampPlugin(objects));
|
||||||
|
RegisterPlugin(new ViaRoutePlugin(objects));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
IniFile serverConfig(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
|
|
||||||
);
|
|
||||||
|
|
||||||
boost::filesystem::path ram_index_path = boost::filesystem::absolute(
|
|
||||||
serverConfig.GetParameter("ramIndex"),
|
|
||||||
base_path
|
|
||||||
);
|
|
||||||
|
|
||||||
boost::filesystem::path file_index_path = boost::filesystem::absolute(
|
|
||||||
serverConfig.GetParameter("fileIndex"),
|
|
||||||
base_path
|
|
||||||
);
|
|
||||||
|
|
||||||
boost::filesystem::path node_data_path = boost::filesystem::absolute(
|
|
||||||
serverConfig.GetParameter("nodesData"),
|
|
||||||
base_path
|
|
||||||
);
|
|
||||||
boost::filesystem::path edge_data_path = boost::filesystem::absolute(
|
|
||||||
serverConfig.GetParameter("edgesData"),
|
|
||||||
base_path
|
|
||||||
);
|
|
||||||
boost::filesystem::path name_data_path = boost::filesystem::absolute(
|
|
||||||
serverConfig.GetParameter("namesData"),
|
|
||||||
base_path
|
|
||||||
);
|
|
||||||
boost::filesystem::path timestamp_path = boost::filesystem::absolute(
|
|
||||||
serverConfig.GetParameter("timestamp"),
|
|
||||||
base_path
|
|
||||||
);
|
|
||||||
|
|
||||||
objects = new QueryObjectsStorage(
|
|
||||||
hsgr_path.string(),
|
|
||||||
ram_index_path.string(),
|
|
||||||
file_index_path.string(),
|
|
||||||
node_data_path.string(),
|
|
||||||
edge_data_path.string(),
|
|
||||||
name_data_path.string(),
|
|
||||||
timestamp_path.string()
|
|
||||||
);
|
|
||||||
|
|
||||||
RegisterPlugin(new HelloWorldPlugin());
|
|
||||||
RegisterPlugin(new LocatePlugin(objects));
|
|
||||||
RegisterPlugin(new NearestPlugin(objects));
|
|
||||||
RegisterPlugin(new TimestampPlugin(objects));
|
|
||||||
RegisterPlugin(new ViaRoutePlugin(objects));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
OSRM::~OSRM() {
|
OSRM::~OSRM() {
|
||||||
|
@ -47,12 +47,13 @@ class OSRM : boost::noncopyable {
|
|||||||
typedef boost::unordered_map<std::string, BasePlugin *> PluginMap;
|
typedef boost::unordered_map<std::string, BasePlugin *> PluginMap;
|
||||||
QueryObjectsStorage * objects;
|
QueryObjectsStorage * objects;
|
||||||
public:
|
public:
|
||||||
OSRM(const char * server_ini_path);
|
OSRM(const char * server_ini_path, const bool use_shared_memory = false);
|
||||||
~OSRM();
|
~OSRM();
|
||||||
void RunQuery(RouteParameters & route_parameters, http::Reply & reply);
|
void RunQuery(RouteParameters & route_parameters, http::Reply & reply);
|
||||||
private:
|
private:
|
||||||
void RegisterPlugin(BasePlugin * plugin);
|
void RegisterPlugin(BasePlugin * plugin);
|
||||||
PluginMap pluginMap;
|
PluginMap pluginMap;
|
||||||
|
const bool use_shared_memory;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //OSRM_H
|
#endif //OSRM_H
|
||||||
|
Loading…
Reference in New Issue
Block a user