Cleanup library setup

This commit is contained in:
Patrick Niklaus
2015-12-14 22:00:20 +01:00
parent 5a9bee0527
commit 6daa3290d4
7 changed files with 30 additions and 97 deletions
+2 -2
View File
@@ -49,9 +49,9 @@ class OSRM
std::unique_ptr<OSRM_impl> OSRM_pimpl_;
public:
explicit OSRM(libosrm_config &lib_config);
explicit OSRM(LibOSRMConfig lib_config);
~OSRM();
int RunQuery(RouteParameters &route_parameters, osrm::json::Object &json_result);
int RunQuery(const RouteParameters &route_parameters, osrm::json::Object &json_result);
};
#endif // OSRM_HPP
+8 -20
View File
@@ -62,7 +62,7 @@ class named_mutex;
#include <utility>
#include <vector>
OSRM_impl::OSRM_impl(libosrm_config &lib_config)
OSRM_impl::OSRM_impl(LibOSRMConfig lib_config)
{
if (lib_config.use_shared_memory)
{
@@ -88,26 +88,14 @@ OSRM_impl::OSRM_impl(libosrm_config &lib_config)
RegisterPlugin(new RoundTripPlugin<BaseDataFacade<QueryEdge::EdgeData>>(query_data_facade));
}
OSRM_impl::~OSRM_impl()
void OSRM_impl::RegisterPlugin(BasePlugin *raw_plugin_ptr)
{
delete query_data_facade;
for (PluginMap::value_type &plugin_pointer : plugin_map)
{
delete plugin_pointer.second;
}
std::unique_ptr<BasePlugin> plugin_ptr(raw_plugin_ptr);
SimpleLogger().Write() << "loaded plugin: " << plugin_ptr->GetDescriptor();
plugin_map[plugin_ptr->GetDescriptor()] = std::move(plugin_ptr);
}
void OSRM_impl::RegisterPlugin(BasePlugin *plugin)
{
SimpleLogger().Write() << "loaded plugin: " << plugin->GetDescriptor();
if (plugin_map.find(plugin->GetDescriptor()) != plugin_map.end())
{
delete plugin_map.find(plugin->GetDescriptor())->second;
}
plugin_map.emplace(plugin->GetDescriptor(), plugin);
}
int OSRM_impl::RunQuery(RouteParameters &route_parameters, osrm::json::Object &json_result)
int OSRM_impl::RunQuery(const RouteParameters &route_parameters, osrm::json::Object &json_result)
{
const auto &plugin_iterator = plugin_map.find(route_parameters.service);
@@ -171,11 +159,11 @@ void OSRM_impl::increase_concurrent_query_count()
}
// proxy code for compilation firewall
OSRM::OSRM(libosrm_config &lib_config) : OSRM_pimpl_(osrm::make_unique<OSRM_impl>(lib_config)) {}
OSRM::OSRM(LibOSRMConfig lib_config) : OSRM_pimpl_(osrm::make_unique<OSRM_impl>(std::move(lib_config))) {}
OSRM::~OSRM() { OSRM_pimpl_.reset(); }
int OSRM::RunQuery(RouteParameters &route_parameters, osrm::json::Object &json_result)
int OSRM::RunQuery(const RouteParameters &route_parameters, osrm::json::Object &json_result)
{
return OSRM_pimpl_->RunQuery(route_parameters, json_result);
}
+4 -5
View File
@@ -43,16 +43,15 @@ struct RouteParameters;
struct SharedBarriers;
template <class EdgeDataT> class BaseDataFacade;
class OSRM_impl
class OSRM_impl final
{
private:
using PluginMap = std::unordered_map<std::string, BasePlugin *>;
using PluginMap = std::unordered_map<std::string, std::unique_ptr<BasePlugin>>;
public:
OSRM_impl(libosrm_config &lib_config);
OSRM_impl(LibOSRMConfig lib_config);
OSRM_impl(const OSRM_impl &) = delete;
virtual ~OSRM_impl();
int RunQuery(RouteParameters &route_parameters, osrm::json::Object &json_result);
int RunQuery(const RouteParameters &route_parameters, osrm::json::Object &json_result);
private:
void RegisterPlugin(BasePlugin *plugin);