Deskflow 1.24.0.365
Keyboard and mouse sharing utility
Loading...
Searching...
No Matches
DaemonApp.h
Go to the documentation of this file.
1/*
2 * Deskflow -- mouse and keyboard sharing utility
3 * SPDX-FileCopyrightText: (C) 2012 - 2025 Symless Ltd.
4 * SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
5 */
6
7#pragma once
8
9#include <string>
10
11#include <QObject>
12#include <QThread>
13
14class Event;
15class IEventQueue;
17class QLocalServer;
18class QCoreApplication;
19
21class DaemonIpcServer;
22}
23
24#if SYSAPI_WIN32
26#endif
27
28extern const char *const kLogFilename;
29
30class DaemonApp : public QObject
31{
32 Q_OBJECT
33
34public:
44
45 explicit DaemonApp(IEventQueue &events);
46 ~DaemonApp() override;
47
48 InitResult init(int argc, char **argv);
49 void run(QThread &daemonThread);
50 void setForeground();
51 void initLogging();
52 void connectIpcServer(const deskflow::core::ipc::DaemonIpcServer *ipcServer) const;
53
54 static QString logFilename();
55
56private:
57 void daemonize();
58 void handleError(const char *message);
59 int mainLoop();
60 int daemonLoop();
61 void saveLogLevel(const QString &logLevel) const;
62 void setElevate(bool elevate);
63 void setCommand(const QString &command);
64 void applyWatchdogCommand() const;
65 void clearWatchdogCommand();
66 void clearSettings() const;
67
68 static void showConsole();
69
70#if SYSAPI_WIN32
71 std::unique_ptr<MSWindowsWatchdog> m_pWatchdog;
72#endif
73
74 IEventQueue &m_events;
75 FileLogOutputter *m_pFileLogOutputter = nullptr;
76 deskflow::core::ipc::DaemonIpcServer *m_ipcServer = nullptr;
77 std::string m_command = "";
78 bool m_elevate = false;
79 bool m_foreground = false;
80};
const char *const kLogFilename
static QString logFilename()
Definition DaemonApp.cpp:220
void initLogging()
Definition DaemonApp.cpp:231
InitResult
Definition DaemonApp.h:36
@ ArgsError
Definition DaemonApp.h:41
@ ShowHelp
Definition DaemonApp.h:40
@ StartDaemon
Definition DaemonApp.h:39
@ Installed
Definition DaemonApp.h:37
@ Uninstalled
Definition DaemonApp.h:38
@ FatalError
Definition DaemonApp.h:42
~DaemonApp() override
InitResult init(int argc, char **argv)
void setForeground()
Definition DaemonApp.cpp:225
void run(QThread &daemonThread)
Definition DaemonApp.cpp:125
void connectIpcServer(const deskflow::core::ipc::DaemonIpcServer *ipcServer) const
Definition DaemonApp.cpp:105
DaemonApp(IEventQueue &events)
Definition DaemonApp.cpp:43
Event.
Definition Event.h:29
Write log to file.
Definition LogOutputters.h:57
Event queue interface.
Definition IEventQueue.h:29
Monitors and controls a core process on Windows, elevating if necessary.
Definition MSWindowsWatchdog.h:29
Definition DaemonIpcServer.h:18
Definition DaemonApp.h:20