aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDominik Holland <dominik.holland@pelagicore.com>2019-05-27 11:35:28 +0200
committerDominik Holland <dominik.holland@pelagicore.com>2019-05-27 11:35:28 +0200
commite42aafef74742c5a0b5046119c654ac7d64e7ec5 (patch)
tree2dca30eda4015dc84edcfaad7b2294e10dace8ac
parent9c5db0c2b17ec6e08fbaa1f472e0993fcf49a0c9 (diff)
ivigenerator: Add a lock file to start the server only once
Change-Id: I4200faffdb29f3296e401af94506dee7d62607e4 Fixes: AUTOSUITE-987 Reviewed-by: Egor Nemtsev <enemtsev@luxoft.com>
-rw-r--r--src/tools/ivigenerator/templates_server_qtro_simulator/main.cpp.tpl9
-rw-r--r--src/tools/media-simulation-server/main.cpp9
2 files changed, 18 insertions, 0 deletions
diff --git a/src/tools/ivigenerator/templates_server_qtro_simulator/main.cpp.tpl b/src/tools/ivigenerator/templates_server_qtro_simulator/main.cpp.tpl
index 042f8c5..dfed9b6 100644
--- a/src/tools/ivigenerator/templates_server_qtro_simulator/main.cpp.tpl
+++ b/src/tools/ivigenerator/templates_server_qtro_simulator/main.cpp.tpl
@@ -38,6 +38,8 @@
#}
{% include "common/generated_comment.cpp.tpl" %}
#include <QCoreApplication>
+#include <QDir>
+#include <QLockFile>
{% for interface in module.interfaces %}
#include "{{interface|lower}}backend.h"
@@ -51,6 +53,13 @@ int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
+ // single instance guard
+ QLockFile lockFile(QStringLiteral("%1/%2.lock").arg(QDir::tempPath(), app.applicationName()));
+ if (!lockFile.tryLock(100)) {
+ qCritical("%s already running, aborting...", qPrintable(app.applicationName()));
+ return EXIT_FAILURE;
+ }
+
auto simulationEngine = new QIviSimulationEngine(QStringLiteral("{{module.name|lower}}"));
{% for interface in module.interfaces %}
diff --git a/src/tools/media-simulation-server/main.cpp b/src/tools/media-simulation-server/main.cpp
index 04fcda7..914e904 100644
--- a/src/tools/media-simulation-server/main.cpp
+++ b/src/tools/media-simulation-server/main.cpp
@@ -40,6 +40,8 @@
****************************************************************************/
#include <QCoreApplication>
+#include <QDir>
+#include <QLockFile>
#include "database_helper.h"
@@ -62,6 +64,13 @@ int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
+ // single instance guard
+ QLockFile lockFile(QStringLiteral("%1/%2.lock").arg(QDir::tempPath(), app.applicationName()));
+ if (!lockFile.tryLock(100)) {
+ qCritical("%s already running, aborting...", qPrintable(app.applicationName()));
+ return EXIT_FAILURE;
+ }
+
QString dbFile = mediaDatabaseFile();
createMediaDatabase(dbFile);