remove shared memory indicator member, use unique_ptr for barriers

This commit is contained in:
Dennis Luxen 2014-10-08 19:30:42 +02:00
parent 9455ea0547
commit 4c64f5fe62
2 changed files with 7 additions and 10 deletions

View File

@ -58,11 +58,11 @@ namespace boost { namespace interprocess { class named_mutex; } }
#include <utility> #include <utility>
#include <vector> #include <vector>
OSRM_impl::OSRM_impl(ServerPaths server_paths, const bool use_shared_memory) : use_shared_memory(use_shared_memory) OSRM_impl::OSRM_impl(ServerPaths server_paths, const bool use_shared_memory)
{ {
if (use_shared_memory) if (use_shared_memory)
{ {
barrier = new SharedBarriers(); barrier = osrm::make_unique<SharedBarriers>();
query_data_facade = new SharedDataFacade<QueryEdge::EdgeData>(); query_data_facade = new SharedDataFacade<QueryEdge::EdgeData>();
} }
else else
@ -88,10 +88,6 @@ OSRM_impl::~OSRM_impl()
{ {
delete plugin_pointer.second; delete plugin_pointer.second;
} }
if (use_shared_memory)
{
delete barrier;
}
} }
void OSRM_impl::RegisterPlugin(BasePlugin *plugin) void OSRM_impl::RegisterPlugin(BasePlugin *plugin)
@ -111,7 +107,7 @@ void OSRM_impl::RunQuery(RouteParameters &route_parameters, http::Reply &reply)
if (plugin_map.end() != iter) if (plugin_map.end() != iter)
{ {
reply.status = http::Reply::ok; reply.status = http::Reply::ok;
if (use_shared_memory) if (barrier)
{ {
// lock update pending // lock update pending
boost::interprocess::scoped_lock<boost::interprocess::named_mutex> pending_lock( boost::interprocess::scoped_lock<boost::interprocess::named_mutex> pending_lock(
@ -132,7 +128,7 @@ void OSRM_impl::RunQuery(RouteParameters &route_parameters, http::Reply &reply)
} }
iter->second->HandleRequest(route_parameters, reply); iter->second->HandleRequest(route_parameters, reply);
if (use_shared_memory) if (barrier)
{ {
// lock query // lock query
boost::interprocess::scoped_lock<boost::interprocess::named_mutex> query_lock( boost::interprocess::scoped_lock<boost::interprocess::named_mutex> query_lock(

View File

@ -36,6 +36,7 @@ struct RouteParameters;
#include "../DataStructures/QueryEdge.h" #include "../DataStructures/QueryEdge.h"
#include <memory>
#include <unordered_map> #include <unordered_map>
#include <string> #include <string>
@ -56,8 +57,8 @@ class OSRM_impl
private: private:
void RegisterPlugin(BasePlugin *plugin); void RegisterPlugin(BasePlugin *plugin);
PluginMap plugin_map; PluginMap plugin_map;
bool use_shared_memory; // will only be initialized if shared memory is used
SharedBarriers *barrier; std::unique_ptr<SharedBarriers> barrier;
// base class pointer to the objects // base class pointer to the objects
BaseDataFacade<QueryEdge::EdgeData> *query_data_facade; BaseDataFacade<QueryEdge::EdgeData> *query_data_facade;
}; };