diff options
Diffstat (limited to 'server-tools/instance-manager/WindowsService.h')
-rw-r--r-- | server-tools/instance-manager/WindowsService.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/server-tools/instance-manager/WindowsService.h b/server-tools/instance-manager/WindowsService.h new file mode 100644 index 00000000000..612eeda21e9 --- /dev/null +++ b/server-tools/instance-manager/WindowsService.h @@ -0,0 +1,43 @@ +#pragma once + +class WindowsService +{ +protected: + bool inited; + const char *serviceName; + const char *displayName; + const char *username; + const char *password; + SERVICE_STATUS_HANDLE statusHandle; + DWORD statusCheckpoint; + SERVICE_STATUS status; + DWORD dwAcceptedControls; + bool debugging; + +public: + WindowsService(void); + ~WindowsService(void); + + BOOL Install(); + BOOL Remove(); + BOOL Init(); + BOOL IsInstalled(); + void SetAcceptedControls(DWORD acceptedControls); + void Debug(bool debugFlag) { debugging= debugFlag; } + +public: + static void WINAPI ServiceMain(DWORD argc, LPTSTR *argv); + static void WINAPI ControlHandler(DWORD CtrlType); + +protected: + virtual void Run()= 0; + virtual void Stop() {} + virtual void Shutdown() {} + virtual void Pause() {} + virtual void Continue() {} + virtual void Log(const char *msg) {} + + BOOL ReportStatus(DWORD currentStatus, DWORD waitHint= 3000, DWORD dwError=0); + void HandleControlCode(DWORD opcode); + void RegisterAndRun(DWORD argc, LPTSTR *argv); +}; |