13#define WIN32_LEAN_AND_MEAN
21#define ARCH_DAEMON ArchDaemonWindows
78 static HKEY openNTServicesKey();
80 int doRunDaemon(
RunFunc runFunc);
81 void doDaemonRunning(
bool running);
82 UINT doGetDaemonQuitMessage();
84 static void setStatus(
DWORD state);
86 static void setStatusError(
DWORD error);
88 static bool isRunState(
DWORD state);
90 void serviceMain(
DWORD, LPTSTR *);
91 static void WINAPI serviceMainEntry(
DWORD, LPTSTR *);
93 void serviceHandler(
DWORD ctrl);
94 static void WINAPI serviceHandlerEntry(
DWORD ctrl);
96 void start(
const QString &
name);
97 void stop(
const QString &
name);
100 class ArchDaemonRunException
103 ArchDaemonRunException(
int result) : m_result(result)
116 DWORD m_serviceState;
117 bool m_serviceHandlerWaiting;
118 bool m_serviceRunning;
120 DWORD m_daemonThreadID;
124 SERVICE_STATUS_HANDLE m_statusHandle;
128 QString m_commandLine;
static const struct sockaddr FAR * name
Definition ArchNetworkWinsock.cpp:28
static const WSAEVENT FAR DWORD
Definition ArchNetworkWinsock.cpp:55
static int(PASCAL FAR *bind_winsock)(SOCKET s
ArchMutexImpl * ArchMutex
Opaque mutex type. An opaque type representing a mutex.
Definition IArchMultithread.h:40
ArchCondImpl * ArchCond
Opaque condition variable type. An opaque type representing a condition variable.
Definition IArchMultithread.h:26
~ArchDaemonWindows() override=default
static UINT getDaemonQuitMessage()
Get daemon quit message.
Definition ArchDaemonWindows.cpp:41
static void daemonRunning(bool running)
Indicate daemon is in main loop.
Definition ArchDaemonWindows.cpp:34
int daemonize(DaemonFunc const &func) override
Daemonize the process.
Definition ArchDaemonWindows.cpp:56
std::function< int()> RunFunc
Definition ArchDaemonWindows.h:27
static void daemonFailed(int result)
Indicate failure of running daemon.
Definition ArchDaemonWindows.cpp:50
QString commandLine() const override
Get the command line.
Definition ArchDaemonWindows.h:72
static int runDaemon(RunFunc runFunc)
Run the daemon.
Definition ArchDaemonWindows.cpp:28
ArchDaemonWindows()
Definition ArchDaemonWindows.cpp:23
Interface for architecture dependent daemonizing.
Definition IArchDaemon.h:21
std::function< int()> DaemonFunc
Definition IArchDaemon.h:23