instantiate different inherited class at bcp that provides all data

This commit is contained in:
Dennis Luxen 2013-09-17 18:37:08 +02:00
parent 1e5c4b0d79
commit 66d58bf047
2 changed files with 92 additions and 74 deletions

View File

@ -20,7 +20,10 @@ 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)
: use_shared_memory(use_shared_memory)
{
if( !use_shared_memory ) {
if( !testDataFile(server_ini_path) ){ if( !testDataFile(server_ini_path) ){
std::string error_message = std::string(server_ini_path) + " not found"; std::string error_message = std::string(server_ini_path) + " not found";
throw OSRMException(error_message.c_str()); throw OSRMException(error_message.c_str());
@ -94,6 +97,20 @@ OSRM::OSRM(const char * server_ini_path) {
RegisterPlugin(new NearestPlugin(objects)); RegisterPlugin(new NearestPlugin(objects));
RegisterPlugin(new TimestampPlugin(objects)); RegisterPlugin(new TimestampPlugin(objects));
RegisterPlugin(new ViaRoutePlugin(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));
}
} }
OSRM::~OSRM() { OSRM::~OSRM() {

View File

@ -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