diff options
-rw-r--r-- | common/listener.cpp | 9 | ||||
-rw-r--r-- | common/listener.h | 3 | ||||
-rw-r--r-- | 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 @@ | |||
33 | 33 | ||
34 | #include <QLocalSocket> | 34 | #include <QLocalSocket> |
35 | #include <QTimer> | 35 | #include <QTimer> |
36 | #include <QLockFile> | ||
37 | 36 | ||
38 | Listener::Listener(const QByteArray &resourceInstanceIdentifier, QObject *parent) | 37 | Listener::Listener(const QByteArray &resourceInstanceIdentifier, QObject *parent) |
39 | : QObject(parent), | 38 | : QObject(parent), |
@@ -48,15 +47,7 @@ Listener::Listener(const QByteArray &resourceInstanceIdentifier, QObject *parent | |||
48 | this, &Listener::acceptConnection); | 47 | this, &Listener::acceptConnection); |
49 | Trace() << "Trying to open " << m_resourceInstanceIdentifier; | 48 | Trace() << "Trying to open " << m_resourceInstanceIdentifier; |
50 | 49 | ||
51 | m_lockfile = new QLockFile(m_resourceInstanceIdentifier + ".lock"); | ||
52 | m_lockfile->setStaleLockTime(0); | ||
53 | if (!m_lockfile->tryLock(0)) { | ||
54 | Warning() << "Failed to acquire exclusive lock on socket."; | ||
55 | exit(-1); | ||
56 | } | ||
57 | |||
58 | if (!m_server->listen(QString::fromLatin1(m_resourceInstanceIdentifier))) { | 50 | if (!m_server->listen(QString::fromLatin1(m_resourceInstanceIdentifier))) { |
59 | // FIXME: multiple starts need to be handled here | ||
60 | m_server->removeServer(m_resourceInstanceIdentifier); | 51 | m_server->removeServer(m_resourceInstanceIdentifier); |
61 | if (!m_server->listen(QString::fromLatin1(m_resourceInstanceIdentifier))) { | 52 | if (!m_server->listen(QString::fromLatin1(m_resourceInstanceIdentifier))) { |
62 | Warning() << "Utter failure to start server"; | 53 | 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: | |||
53 | QByteArray commandBuffer; | 53 | QByteArray commandBuffer; |
54 | }; | 54 | }; |
55 | 55 | ||
56 | class QLockFile; | ||
57 | |||
58 | class Listener : public QObject | 56 | class Listener : public QObject |
59 | { | 57 | { |
60 | Q_OBJECT | 58 | Q_OBJECT |
@@ -95,5 +93,4 @@ private: | |||
95 | QTimer *m_clientBufferProcessesTimer; | 93 | QTimer *m_clientBufferProcessesTimer; |
96 | QTimer *m_checkConnectionsTimer; | 94 | QTimer *m_checkConnectionsTimer; |
97 | int m_messageId; | 95 | int m_messageId; |
98 | QLockFile *m_lockfile; | ||
99 | }; | 96 | }; |
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 @@ | |||
18 | */ | 18 | */ |
19 | 19 | ||
20 | #include <QCoreApplication> | 20 | #include <QCoreApplication> |
21 | #include <QLockFile> | ||
21 | 22 | ||
22 | #include <signal.h> | 23 | #include <signal.h> |
23 | 24 | ||
@@ -41,7 +42,16 @@ int main(int argc, char *argv[]) | |||
41 | return app.exec(); | 42 | return app.exec(); |
42 | } | 43 | } |
43 | 44 | ||
44 | Listener *listener = new Listener(argv[1], &app); | 45 | const QByteArray instanceIdentifier = argv[1]; |
46 | |||
47 | QLockFile lockfile(instanceIdentifier + ".lock"); | ||
48 | lockfile.setStaleLockTime(0); | ||
49 | if (!lockfile.tryLock(0)) { | ||
50 | Warning() << "Failed to acquire exclusive lock on socket."; | ||
51 | return -1; | ||
52 | } | ||
53 | |||
54 | Listener *listener = new Listener(instanceIdentifier, &app); | ||
45 | 55 | ||
46 | QObject::connect(&app, &QCoreApplication::aboutToQuit, | 56 | QObject::connect(&app, &QCoreApplication::aboutToQuit, |
47 | listener, &Listener::closeAllConnections); | 57 | listener, &Listener::closeAllConnections); |