summaryrefslogtreecommitdiff
path: root/server-tools/instance-manager/WindowsService.h
diff options
context:
space:
mode:
Diffstat (limited to 'server-tools/instance-manager/WindowsService.h')
-rwxr-xr-xserver-tools/instance-manager/WindowsService.h44
1 files changed, 44 insertions, 0 deletions
diff --git a/server-tools/instance-manager/WindowsService.h b/server-tools/instance-manager/WindowsService.h
new file mode 100755
index 00000000000..b266bbca533
--- /dev/null
+++ b/server-tools/instance-manager/WindowsService.h
@@ -0,0 +1,44 @@
+#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);
+};
+