remove shared memory indicator member, use unique_ptr for barriers
This commit is contained in:
parent
9455ea0547
commit
4c64f5fe62
@ -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(
|
||||||
|
@ -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;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user