26 #include <QCryptographicHash>
41 , memLockKey (generateKeyHash( key,
"_memLockKey" ))
42 , sharedmemKey (generateKeyHash( key,
"_sharedmemKey"))
43 , sharedMem (sharedmemKey)
44 , memLock (memLockKey, 1)
68 data.append( key.toUtf8() );
69 data.append( salt.toUtf8() );
70 data = QCryptographicHash::hash( data, QCryptographicHash::Sha1 ).toHex();
103 const bool sharedMemAlreadyExists =
sharedMem.attach();
104 if (sharedMemAlreadyExists)
sharedMem.detach();
106 return sharedMemAlreadyExists;
127 const bool success =
sharedMem.create(
sizeof( quint64 ) );
bool isAnotherRunning()
Check whether another instance of the application is running.
void release()
Release the running application.
const QString sharedmemKey
Key labelling the shared memory.
bool tryToRun()
Try to run the applicaiton, return false if another instance is running.
QSystemSemaphore memLock
Lock used when shared memory is accessed.
QString generateKeyHash(const QString &key, const QString &salt)
Generate hash string for a given keys.
QSharedMemory sharedMem
Shared memory labelled by a given key.
RunGuard(const QString &key)
Constructor for a run guard.