You need to sign in or sign up before continuing.
-
andrey.daragan authoredf2b2ac4d
main.cpp 2.30 KiB
#include <QCoreApplication>
#include <QSystemSemaphore>
#include <QSharedMemory>
#include <QCommandLineParser>
#include <QProcess>
#include <unistd.h>
#include "DapHalper.h"
#include "DapServiceController.h"
#include "DapLogger.h"
#include <sys/stat.h>
void processArgs();
int main(int argc, char *argv[])
{
// Creating a semaphore for locking external resources, as well as initializing an external resource-memory
QSystemSemaphore systemSemaphore(QString("systemSemaphore for %1").arg("CellFrameDashboardService"), 1);
QSharedMemory memmoryAppBagFix(QString("memmory for %1").arg("CellFrameDashboardService"));
QSharedMemory memmoryApp(QString("memmory for %1").arg("CellFrameDashboardService"));
// Check for the existence of a running instance of the program
bool isRunning = DapHalper::getInstance().checkExistenceRunningInstanceApp(systemSemaphore, memmoryApp, memmoryAppBagFix);
if(isRunning)
{
return 1;
}
QCoreApplication a(argc, argv);
a.setOrganizationName("DEMLABS");
a.setOrganizationDomain("demlabs.net");
a.setApplicationName("CellFrameDashboardService");
DapLogger dapLogger;
/// TODO: The code is commented out at the time of developing the logging strategy in the project
//#ifndef QT_DEBUG
#ifdef Q_OS_LINUX
dapLogger.setLogFile(QString("/opt/cellframe-dashboard/log/%1Service.log").arg(DAP_BRAND));
#elif defined Q_OS_WIN
dapLogger.setLogFile(QString("%1Service.log").arg(DAP_BRAND));
dapLogger.setLogLevel(L_INFO);
#elif defined Q_OS_MAC
mkdir("tmp/cellframe-dashboard_log",0777);
dapLogger.setLogFile(QString("/tmp/cellframe-dashboard_log/%1Service.log").arg(DAP_BRAND));
#endif
//#endif
// Creating the main application object
processArgs();
DapServiceController serviceController;
serviceController.start();
return a.exec();
}
void processArgs()
{
#if defined(Q_OS_LINUX) || defined(Q_OS_MAC)
QCommandLineParser clParser;
clParser.parse(QCoreApplication::arguments());
auto options = clParser.unknownOptionNames();
if (options.contains("D")) {
daemon(1, 0);
}
else if (options.contains("stop")) {
qint64 pid = QCoreApplication::applicationPid();
QProcess::startDetached("kill -9 " + QString::number(pid));
exit(0);
}
#endif
}