diff options
author | Dominik Holland <dominik.holland@pelagicore.com> | 2019-05-27 11:35:28 +0200 |
---|---|---|
committer | Dominik Holland <dominik.holland@pelagicore.com> | 2019-05-27 11:35:28 +0200 |
commit | e42aafef74742c5a0b5046119c654ac7d64e7ec5 (patch) | |
tree | 2dca30eda4015dc84edcfaad7b2294e10dace8ac | |
parent | 9c5db0c2b17ec6e08fbaa1f472e0993fcf49a0c9 (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.tpl | 9 | ||||
-rw-r--r-- | src/tools/media-simulation-server/main.cpp | 9 |
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); |