diff --git a/src/lib/utility/interprocess/SharedMemoryGarbageCollector.cpp b/src/lib/utility/interprocess/SharedMemoryGarbageCollector.cpp index 44538e65..d39f3477 100644 --- a/src/lib/utility/interprocess/SharedMemoryGarbageCollector.cpp +++ b/src/lib/utility/interprocess/SharedMemoryGarbageCollector.cpp @@ -4,8 +4,9 @@ #include "utility/logging/logging.h" #include "utility/TimePoint.h" +#include "utility/utilityApp.h" -std::string SharedMemoryGarbageCollector::s_memoryName = "garbage_collector"; +std::string SharedMemoryGarbageCollector::s_memoryNamePrefix = "grbg_cllctr_"; std::string SharedMemoryGarbageCollector::s_instancesKeyName = "running_instances"; std::string SharedMemoryGarbageCollector::s_timeStampsKeyName = "memory_to_timestamps"; @@ -30,7 +31,7 @@ SharedMemoryGarbageCollector* SharedMemoryGarbageCollector::getInstance() } SharedMemoryGarbageCollector::SharedMemoryGarbageCollector() - : m_memory(s_memoryName, 65536 /* 64 kB */, SharedMemory::OPEN_OR_CREATE) + : m_memory(getMemoryName(), 65536 /* 64 kB */, SharedMemory::OPEN_OR_CREATE) , m_loopIsRunning(false) { } @@ -114,8 +115,8 @@ void SharedMemoryGarbageCollector::stop() if (!otherRunningInstances) { - LOG_INFO_STREAM(<< "delete garbage collector memory: " << s_memoryName); - SharedMemory::deleteSharedMemory(s_memoryName); + LOG_INFO_STREAM(<< "delete garbage collector memory: " << getMemoryName()); + SharedMemory::deleteSharedMemory(getMemoryName()); } } @@ -144,6 +145,11 @@ void SharedMemoryGarbageCollector::unregisterSharedMemory(const std::string& sha update(); } +std::string SharedMemoryGarbageCollector::getMemoryName() +{ + return s_memoryNamePrefix + (utility::getApplicationArchitectureType() == APPLICATION_ARCHITECTURE_X86_32 ? "32" : "64"); +} + void SharedMemoryGarbageCollector::update() { std::lock_guard lock(m_sharedMemoryNamesMutex); diff --git a/src/lib/utility/interprocess/SharedMemoryGarbageCollector.h b/src/lib/utility/interprocess/SharedMemoryGarbageCollector.h index 05b30715..5970f3d4 100644 --- a/src/lib/utility/interprocess/SharedMemoryGarbageCollector.h +++ b/src/lib/utility/interprocess/SharedMemoryGarbageCollector.h @@ -27,9 +27,10 @@ public: void unregisterSharedMemory(const std::string& sharedMemoryName); private: + static std::string getMemoryName(); void update(); - static std::string s_memoryName; + static std::string s_memoryNamePrefix; static std::string s_instancesKeyName; static std::string s_timeStampsKeyName;