deciding which memory subsystem to use depending on server.ini

This commit is contained in:
Dennis Luxen 2013-10-01 16:48:40 +02:00
parent ca3464512d
commit fd7b22f639

View File

@ -65,12 +65,10 @@ int main (int argc, char * argv[]) {
try { try {
LogPolicy::GetInstance().Unmute(); LogPolicy::GetInstance().Unmute();
#ifdef __linux__ #ifdef __linux__
if(!mlockall(MCL_CURRENT | MCL_FUTURE)) { if( !mlockall(MCL_CURRENT | MCL_FUTURE) ) {
SimpleLogger().Write(logWARNING) << "Process " << argv[0] << "could not be locked to RAM"; SimpleLogger().Write(logWARNING) <<
"Process " << argv[0] << "could not be locked to RAM";
} }
#endif
#ifdef __linux__
installCrashHandler(argv[0]); installCrashHandler(argv[0]);
#endif #endif
SimpleLogger().Write() << SimpleLogger().Write() <<
@ -84,10 +82,23 @@ int main (int argc, char * argv[]) {
pthread_sigmask(SIG_BLOCK, &new_mask, &old_mask); pthread_sigmask(SIG_BLOCK, &new_mask, &old_mask);
#endif #endif
IniFile serverConfig((argc > 1 ? argv[1] : "server.ini")); IniFile server_config((argc > 1 ? argv[1] : "server.ini"));
OSRM routing_machine((argc > 1 ? argv[1] : "server.ini"));
Server * s = ServerFactory::CreateServer(serverConfig); bool use_shared_memory = false;
if(
server_config.Holds("SharedMemory") &&
"yes" == server_config.GetParameter("SharedMemory")
) {
use_shared_memory = true;
SimpleLogger().Write() << "Using data stored in shared memory";
}
OSRM routing_machine(
(argc > 1 ? argv[1] : "server.ini"),
use_shared_memory
);
Server * s = ServerFactory::CreateServer(server_config);
s->GetRequestHandlerPtr().RegisterRoutingMachine(&routing_machine); s->GetRequestHandlerPtr().RegisterRoutingMachine(&routing_machine);
boost::thread t(boost::bind(&Server::Run, s)); boost::thread t(boost::bind(&Server::Run, s));
@ -115,7 +126,8 @@ int main (int argc, char * argv[]) {
std::cout << "[server] stopping threads" << std::endl; std::cout << "[server] stopping threads" << std::endl;
if(!t.timed_join(boost::posix_time::seconds(2))) { if(!t.timed_join(boost::posix_time::seconds(2))) {
SimpleLogger().Write(logDEBUG) << "Threads did not finish within 2 seconds. Hard abort!"; SimpleLogger().Write(logDEBUG) <<
"Threads did not finish within 2 seconds. Hard abort!";
} }
std::cout << "[server] freeing objects" << std::endl; std::cout << "[server] freeing objects" << std::endl;