Explorar el Código

Refactored ARunGuard

renamed RunGuard to ARunGuard, renamed files, minor style changes.
Felix Turo hace 4 años
padre
commit
e12adf8718
Se han modificado 6 ficheros con 89 adiciones y 89 borrados
  1. 2 2
      main.cpp
  2. 1 1
      mainwindow.h
  3. 2 2
      openPilotLog.pro
  4. 80 0
      src/classes/arunguard.cpp
  5. 4 4
      src/classes/arunguard.h
  6. 0 80
      src/classes/runguard.cpp

+ 2 - 2
main.cpp

@@ -17,7 +17,7 @@
  */
 #include "mainwindow.h"
 #include "src/gui/dialogues/firstrundialog.h"
-#include "src/classes/runguard.h"
+#include "src/classes/arunguard.h"
 #include <QApplication>
 #include <QProcess>
 #include <QSettings>
@@ -87,7 +87,7 @@ int main(int argc, char *argv[])
 
 
     //sqlite does not deal well with multiple connections, ensure only one instance is running
-    RunGuard guard("opl_single_key");
+    ARunGuard guard("opl_single_key");
         if ( !guard.tryToRun() ){
             qDebug() << "Another Instance is already running. Exiting.";
             return 0;

+ 1 - 1
mainwindow.h

@@ -35,7 +35,7 @@
 #include "src/gui/widgets/debugwidget.h"
 #include "src/gui/dialogues/newtaildialog.h"
 #include "src/gui/dialogues/newpilotdialog.h"
-#include "src/classes/runguard.h"
+#include "src/classes/arunguard.h"
 #include "src/experimental/adatabase.h"
 
 QT_BEGIN_NAMESPACE

+ 2 - 2
openPilotLog.pro

@@ -19,10 +19,10 @@ SOURCES += \
     main.cpp \
     mainwindow.cpp \
     src/classes/aircraft.cpp \
+    src/classes/arunguard.cpp \
     src/classes/download.cpp \
     src/classes/flight.cpp \
     src/classes/pilot.cpp \
-    src/classes/runguard.cpp \
     src/classes/settings.cpp \
     src/classes/stat.cpp \
     src/classes/strictrxvalidator.cpp \
@@ -50,10 +50,10 @@ HEADERS += \
     debug.h \
     mainwindow.h \
     src/classes/aircraft.h \
+    src/classes/arunguard.h \
     src/classes/download.h \
     src/classes/flight.h \
     src/classes/pilot.h \
-    src/classes/runguard.h \
     src/classes/settings.h \
     src/classes/stat.h \
     src/classes/strictrxvalidator.h \

+ 80 - 0
src/classes/arunguard.cpp

@@ -0,0 +1,80 @@
+#include "arunguard.h"
+
+#include <QCryptographicHash>
+
+
+namespace
+{
+
+QString generateKeyHash(const QString &key, const QString &salt)
+{
+    QByteArray data;
+
+    data.append(key.toUtf8());
+    data.append(salt.toUtf8());
+    data = QCryptographicHash::hash(data, QCryptographicHash::Sha1).toHex();
+
+    return data;
+}
+
+}
+
+
+ARunGuard::ARunGuard(const QString &key )
+    : key(key )
+    , memLockKey(generateKeyHash(key, "_memLockKey" ))
+    , sharedmemKey(generateKeyHash(key, "_sharedmemKey" ))
+    , sharedMem(sharedmemKey )
+    , memLock(memLockKey, 1 )
+{
+    memLock.acquire();
+    {
+        QSharedMemory fix(sharedmemKey );    // Fix for *nix: http://habrahabr.ru/post/173281/
+        fix.attach();
+    }
+    memLock.release();
+}
+
+ARunGuard::~ARunGuard()
+{
+    release();
+}
+
+bool ARunGuard::isAnotherRunning()
+{
+    if (sharedMem.isAttached())
+        return false;
+
+    memLock.acquire();
+    const bool isRunning = sharedMem.attach();
+    if (isRunning )
+        sharedMem.detach();
+    memLock.release();
+
+    return isRunning;
+}
+
+bool ARunGuard::tryToRun()
+{
+    if (isAnotherRunning())  // Extra check
+        return false;
+
+    memLock.acquire();
+    const bool result = sharedMem.create(sizeof(quint64 ));
+    memLock.release();
+    if (!result )
+    {
+        release();
+        return false;
+    }
+
+    return true;
+}
+
+void ARunGuard::release()
+{
+    memLock.acquire();
+    if (sharedMem.isAttached())
+        sharedMem.detach();
+    memLock.release();
+}

+ 4 - 4
src/classes/runguard.h → src/classes/arunguard.h

@@ -9,12 +9,12 @@
  * \brief The RunGuard class ensures only a single instance of the application
  * is running simultaneously.
  */
-class RunGuard
+class ARunGuard
 {
 
 public:
-    RunGuard( const QString& key );
-    ~RunGuard();
+    ARunGuard(const QString &key);
+    ~ARunGuard();
 
     bool isAnotherRunning();
     bool tryToRun();
@@ -28,7 +28,7 @@ private:
     QSharedMemory sharedMem;
     QSystemSemaphore memLock;
 
-    Q_DISABLE_COPY( RunGuard )
+    Q_DISABLE_COPY(ARunGuard)
 };
 
 

+ 0 - 80
src/classes/runguard.cpp

@@ -1,80 +0,0 @@
-#include "runguard.h"
-
-#include <QCryptographicHash>
-
-
-namespace
-{
-
-QString generateKeyHash( const QString& key, const QString& salt )
-{
-    QByteArray data;
-
-    data.append( key.toUtf8() );
-    data.append( salt.toUtf8() );
-    data = QCryptographicHash::hash( data, QCryptographicHash::Sha1 ).toHex();
-
-    return data;
-}
-
-}
-
-
-RunGuard::RunGuard( const QString& key )
-    : key( key )
-    , memLockKey( generateKeyHash( key, "_memLockKey" ) )
-    , sharedmemKey( generateKeyHash( key, "_sharedmemKey" ) )
-    , sharedMem( sharedmemKey )
-    , memLock( memLockKey, 1 )
-{
-    memLock.acquire();
-    {
-        QSharedMemory fix( sharedmemKey );    // Fix for *nix: http://habrahabr.ru/post/173281/
-        fix.attach();
-    }
-    memLock.release();
-}
-
-RunGuard::~RunGuard()
-{
-    release();
-}
-
-bool RunGuard::isAnotherRunning()
-{
-    if ( sharedMem.isAttached() )
-        return false;
-
-    memLock.acquire();
-    const bool isRunning = sharedMem.attach();
-    if ( isRunning )
-        sharedMem.detach();
-    memLock.release();
-
-    return isRunning;
-}
-
-bool RunGuard::tryToRun()
-{
-    if ( isAnotherRunning() )   // Extra check
-        return false;
-
-    memLock.acquire();
-    const bool result = sharedMem.create( sizeof( quint64 ) );
-    memLock.release();
-    if ( !result )
-    {
-        release();
-        return false;
-    }
-
-    return true;
-}
-
-void RunGuard::release()
-{
-    memLock.acquire();
-    if ( sharedMem.isAttached() )
-        sharedMem.detach();
-    memLock.release();
-}