openPilotLog
arunguard.h
1 /*
2  *openPilot Log - A FOSS Pilot Logbook Application
3  *Copyright (C) 2020 Felix Turowsky
4  *
5  *This program is free software: you can redistribute it and/or modify
6  *it under the terms of the GNU General Public License as published by
7  *the Free Software Foundation, either version 3 of the License, or
8  *(at your option) any later version.
9  *
10  *This program is distributed in the hope that it will be useful,
11  *but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  *GNU General Public License for more details.
14  *
15  *You should have received a copy of the GNU General Public License
16  *along with this program. If not, see <https://www.gnu.org/licenses/>.
17  */
18 #ifndef ARUNGUARD_H
19 #define ARUNGUARD_H
20 
21 #include <QObject>
22 #include <QSharedMemory>
23 #include <QSystemSemaphore>
24 
29 class ARunGuard
30 {
31 
32 public:
33  ARunGuard(const QString &key);
34  ~ARunGuard();
35 
36  bool isAnotherRunning();
37  bool tryToRun();
38  void release();
39 
40 private:
41  const QString key;
42  const QString memLockKey;
43  const QString sharedmemKey;
44 
45  QSharedMemory sharedMem;
46  QSystemSemaphore memLock;
47 
48  Q_DISABLE_COPY(ARunGuard)
49 };
50 
51 
52 #endif // ARUNGUARD_H
ARunGuard
The RunGuard class ensures only a single instance of the application is running simultaneously.
Definition: arunguard.h:30