Deskflow 1.22.0.197
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 "common/Common.h"
10
11#include <string>
12
13#include <QObject>
14#include <QThread>
15
16class Event;
17class IEventQueue;
19class QLocalServer;
20class QCoreApplication;
21
23class DaemonIpcServer;
24}
25
26#if SYSAPI_WIN32
28#endif
29
30extern const char *const kLogFilename;
31
32class DaemonApp : public QObject
33{
34 Q_OBJECT
35
36public:
46
47 explicit DaemonApp(IEventQueue &events);
48 ~DaemonApp() override;
49
50 InitResult init(int argc, char **argv);
51 void install() const;
52 void uninstall() const;
53 void run(QThread &daemonThread);
54 void setForeground();
55 void initLogging();
56 void connectIpcServer(const deskflow::core::ipc::DaemonIpcServer *ipcServer) const;
57
58 static QString logFilename();
59
60private:
61 void daemonize();
62 void handleError(const char *message);
63 int mainLoop();
64 int daemonLoop();
65 void saveLogLevel(const QString &logLevel) const;
66 void setElevate(bool elevate);
67 void setCommand(const QString &command);
68 void applyWatchdogCommand() const;
69 void clearWatchdogCommand();
70 void clearSettings() const;
71
72 static void showConsole();
73
74#if SYSAPI_WIN32
75 std::unique_ptr<MSWindowsWatchdog> m_pWatchdog;
76#endif
77
78 IEventQueue &m_events;
79 FileLogOutputter *m_pFileLogOutputter = nullptr;
80 deskflow::core::ipc::DaemonIpcServer *m_ipcServer = nullptr;
81 std::string m_command = "";
82 bool m_elevate = false;
83 bool m_foreground = false;
84};
const char *const kLogFilename
static QString logFilename()
Definition DaemonApp.cpp:241
void initLogging()
Definition DaemonApp.cpp:252
void install() const
Definition DaemonApp.cpp:134
InitResult
Definition DaemonApp.h:38
@ ArgsError
Definition DaemonApp.h:43
@ ShowHelp
Definition DaemonApp.h:42
@ StartDaemon
Definition DaemonApp.h:41
@ Installed
Definition DaemonApp.h:39
@ Uninstalled
Definition DaemonApp.h:40
@ FatalError
Definition DaemonApp.h:44
~DaemonApp() override
void uninstall() const
Definition DaemonApp.cpp:140
InitResult init(int argc, char **argv)
void setForeground()
Definition DaemonApp.cpp:246
void run(QThread &daemonThread)
Definition DaemonApp.cpp:146
void connectIpcServer(const deskflow::core::ipc::DaemonIpcServer *ipcServer) const
Definition DaemonApp.cpp:104
DaemonApp(IEventQueue &events)
Definition DaemonApp.cpp:42
Event.
Definition Event.h:27
Write log to file.
Definition LogOutputters.h:60
Event queue interface.
Definition IEventQueue.h:32
Monitors and controls a core process on Windows, elevating if necessary.
Definition MSWindowsWatchdog.h:29
Definition DaemonIpcServer.h:18
Definition DaemonApp.h:22