create lock file if it does not exist
This commit is contained in:
parent
1be67518df
commit
043c8be747
@ -26,6 +26,7 @@ or see http://www.gnu.org/licenses/agpl.txt.
|
|||||||
|
|
||||||
#include <boost/noncopyable.hpp>
|
#include <boost/noncopyable.hpp>
|
||||||
#include <boost/filesystem.hpp>
|
#include <boost/filesystem.hpp>
|
||||||
|
#include <boost/filesystem/fstream.hpp>
|
||||||
#include <boost/interprocess/mapped_region.hpp>
|
#include <boost/interprocess/mapped_region.hpp>
|
||||||
#include <boost/interprocess/xsi_shared_memory.hpp>
|
#include <boost/interprocess/xsi_shared_memory.hpp>
|
||||||
|
|
||||||
@ -36,9 +37,9 @@ struct OSRMLockFile {
|
|||||||
boost::filesystem::path operator()() {
|
boost::filesystem::path operator()() {
|
||||||
boost::filesystem::path temp_dir =
|
boost::filesystem::path temp_dir =
|
||||||
boost::filesystem::temp_directory_path();
|
boost::filesystem::temp_directory_path();
|
||||||
SimpleLogger().Write(logDEBUG) << "creating lock file in " << temp_dir;
|
// SimpleLogger().Write(logDEBUG) << "creating lock file in " << temp_dir;
|
||||||
boost::filesystem::path lock_file = temp_dir / "osrm.lock";
|
boost::filesystem::path lock_file = temp_dir / "osrm.lock";
|
||||||
SimpleLogger().Write(logDEBUG) << "locking at " << lock_file;
|
// SimpleLogger().Write(logDEBUG) << "locking at " << lock_file;
|
||||||
return lock_file;
|
return lock_file;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -144,8 +145,13 @@ public:
|
|||||||
) {
|
) {
|
||||||
try {
|
try {
|
||||||
LockFileT lock_file;
|
LockFileT lock_file;
|
||||||
if(0 == size && !boost::filesystem::exists(lock_file()) ) {
|
if(!boost::filesystem::exists(lock_file()) ) {
|
||||||
|
if( 0 == size ) {
|
||||||
throw OSRMException("lock file does not exist, exiting");
|
throw OSRMException("lock file does not exist, exiting");
|
||||||
|
} else {
|
||||||
|
boost::filesystem::ofstream ofs(lock_file());
|
||||||
|
ofs.close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return new SharedMemory(lock_file(), id, size);
|
return new SharedMemory(lock_file(), id, size);
|
||||||
} catch(const boost::interprocess::interprocess_exception &e){
|
} catch(const boost::interprocess::interprocess_exception &e){
|
||||||
|
Loading…
Reference in New Issue
Block a user