From 25522af61f488a27fae7a24cdc7b2c949f442eed Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Thu, 30 Jul 2015 17:32:26 +0200 Subject: Moved lockfile into synchronizer For better testability of listener. --- common/listener.cpp | 9 --------- common/listener.h | 3 --- synchronizer/main.cpp | 12 +++++++++++- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/common/listener.cpp b/common/listener.cpp index 8ec9b3e..96d87be 100644 --- a/common/listener.cpp +++ b/common/listener.cpp @@ -33,7 +33,6 @@ #include #include -#include Listener::Listener(const QByteArray &resourceInstanceIdentifier, QObject *parent) : QObject(parent), @@ -48,15 +47,7 @@ Listener::Listener(const QByteArray &resourceInstanceIdentifier, QObject *parent this, &Listener::acceptConnection); Trace() << "Trying to open " << m_resourceInstanceIdentifier; - m_lockfile = new QLockFile(m_resourceInstanceIdentifier + ".lock"); - m_lockfile->setStaleLockTime(0); - if (!m_lockfile->tryLock(0)) { - Warning() << "Failed to acquire exclusive lock on socket."; - exit(-1); - } - if (!m_server->listen(QString::fromLatin1(m_resourceInstanceIdentifier))) { - // FIXME: multiple starts need to be handled here m_server->removeServer(m_resourceInstanceIdentifier); if (!m_server->listen(QString::fromLatin1(m_resourceInstanceIdentifier))) { Warning() << "Utter failure to start server"; diff --git a/common/listener.h b/common/listener.h index 0d19823..2d69c35 100644 --- a/common/listener.h +++ b/common/listener.h @@ -53,8 +53,6 @@ public: QByteArray commandBuffer; }; -class QLockFile; - class Listener : public QObject { Q_OBJECT @@ -95,5 +93,4 @@ private: QTimer *m_clientBufferProcessesTimer; QTimer *m_checkConnectionsTimer; int m_messageId; - QLockFile *m_lockfile; }; diff --git a/synchronizer/main.cpp b/synchronizer/main.cpp index 11fec25..2b0cfe3 100644 --- a/synchronizer/main.cpp +++ b/synchronizer/main.cpp @@ -18,6 +18,7 @@ */ #include +#include #include @@ -41,7 +42,16 @@ int main(int argc, char *argv[]) return app.exec(); } - Listener *listener = new Listener(argv[1], &app); + const QByteArray instanceIdentifier = argv[1]; + + QLockFile lockfile(instanceIdentifier + ".lock"); + lockfile.setStaleLockTime(0); + if (!lockfile.tryLock(0)) { + Warning() << "Failed to acquire exclusive lock on socket."; + return -1; + } + + Listener *listener = new Listener(instanceIdentifier, &app); QObject::connect(&app, &QCoreApplication::aboutToQuit, listener, &Listener::closeAllConnections); -- cgit v1.2.3