diff options
-rw-r--r-- | synchronizer/listener.cpp | 9 | ||||
-rw-r--r-- | synchronizer/listener.h | 3 |
2 files changed, 12 insertions, 0 deletions
diff --git a/synchronizer/listener.cpp b/synchronizer/listener.cpp index e930a02..e9e6188 100644 --- a/synchronizer/listener.cpp +++ b/synchronizer/listener.cpp | |||
@@ -33,6 +33,7 @@ | |||
33 | 33 | ||
34 | #include <QLocalSocket> | 34 | #include <QLocalSocket> |
35 | #include <QTimer> | 35 | #include <QTimer> |
36 | #include <QLockFile> | ||
36 | 37 | ||
37 | Listener::Listener(const QByteArray &resourceName, QObject *parent) | 38 | Listener::Listener(const QByteArray &resourceName, QObject *parent) |
38 | : QObject(parent), | 39 | : QObject(parent), |
@@ -48,6 +49,14 @@ Listener::Listener(const QByteArray &resourceName, QObject *parent) | |||
48 | connect(m_server, &QLocalServer::newConnection, | 49 | connect(m_server, &QLocalServer::newConnection, |
49 | this, &Listener::acceptConnection); | 50 | this, &Listener::acceptConnection); |
50 | Trace() << "Trying to open " << m_resourceName; | 51 | Trace() << "Trying to open " << m_resourceName; |
52 | |||
53 | m_lockfile = new QLockFile(resourceName + ".lock"); | ||
54 | m_lockfile->setStaleLockTime(0); | ||
55 | if (!m_lockfile->tryLock(0)) { | ||
56 | Warning() << "Failed to acquire exclusive lock on socket."; | ||
57 | exit(-1); | ||
58 | } | ||
59 | |||
51 | if (!m_server->listen(QString::fromLatin1(resourceName))) { | 60 | if (!m_server->listen(QString::fromLatin1(resourceName))) { |
52 | // FIXME: multiple starts need to be handled here | 61 | // FIXME: multiple starts need to be handled here |
53 | m_server->removeServer(resourceName); | 62 | m_server->removeServer(resourceName); |
diff --git a/synchronizer/listener.h b/synchronizer/listener.h index d2ef0fc..b3929e7 100644 --- a/synchronizer/listener.h +++ b/synchronizer/listener.h | |||
@@ -53,6 +53,8 @@ public: | |||
53 | QByteArray commandBuffer; | 53 | QByteArray commandBuffer; |
54 | }; | 54 | }; |
55 | 55 | ||
56 | class QLockFile; | ||
57 | |||
56 | class Listener : public QObject | 58 | class Listener : public QObject |
57 | { | 59 | { |
58 | Q_OBJECT | 60 | Q_OBJECT |
@@ -93,4 +95,5 @@ private: | |||
93 | QTimer *m_clientBufferProcessesTimer; | 95 | QTimer *m_clientBufferProcessesTimer; |
94 | QTimer *m_checkConnectionsTimer; | 96 | QTimer *m_checkConnectionsTimer; |
95 | int m_messageId; | 97 | int m_messageId; |
98 | QLockFile *m_lockfile; | ||
96 | }; | 99 | }; |