Entropy Piano Tuner  1.1.3 (documentation not yet complete)
An open-source experimental software for piano tuning by entropy minimization
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
runguard.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Copyright 2015 Haye Hinrichsen, Christoph Wick
3  *
4  * This file is part of Entropy Piano Tuner.
5  *
6  * Entropy Piano Tuner is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by the
8  * Free Software Foundation, either version 3 of the License, or (at your
9  * option) any later version.
10  *
11  * Entropy Piano Tuner is distributed in the hope that it will be useful, but
12  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14  * more details.
15  *
16  * You should have received a copy of the GNU General Public License along with
17  * Entropy Piano Tuner. If not, see http://www.gnu.org/licenses/.
18  *****************************************************************************/
19 
20 //============================================================================
21 // RunGuard, preventing multiple instances of the application
22 //============================================================================
23 
24 #ifndef RUNGUARD_H
25 #define RUNGUARD_H
26 
27 #include <QObject>
28 #include <QSharedMemory>
29 #include <QSystemSemaphore>
30 
41 
42 class RunGuard
43 {
44 public:
45  RunGuard (const QString& key);
47 
48  bool isAnotherRunning();
49  bool tryToRun();
50  void release();
51 
52 private:
53  QString generateKeyHash (const QString& key, const QString& salt);
54 
55  const QString key;
56  const QString memLockKey;
57  const QString sharedmemKey;
58 
59  QSharedMemory sharedMem;
60  QSystemSemaphore memLock;
61 };
62 
63 #endif // RUN_GUARD
bool isAnotherRunning()
Check whether another instance of the application is running.
Definition: runguard.cpp:91
const QString key
Name assigned to the instance.
Definition: runguard.h:55
const QString memLockKey
Key labelling the semaphore lock.
Definition: runguard.h:56
void release()
Release the running application.
Definition: runguard.cpp:144
const QString sharedmemKey
Key labelling the shared memory.
Definition: runguard.h:57
bool tryToRun()
Try to run the applicaiton, return false if another instance is running.
Definition: runguard.cpp:122
QSystemSemaphore memLock
Lock used when shared memory is accessed.
Definition: runguard.h:60
Class for checking whether the application is already running.
Definition: runguard.h:42
~RunGuard()
Definition: runguard.h:46
QString generateKeyHash(const QString &key, const QString &salt)
Generate hash string for a given keys.
Definition: runguard.cpp:64
QSharedMemory sharedMem
Shared memory labelled by a given key.
Definition: runguard.h:59
RunGuard(const QString &key)
Constructor for a run guard.
Definition: runguard.cpp:39