diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 18:07:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 18:07:14 +0000 |
commit | a175314c3e5827eb193872241446f2f8f5c9d33c (patch) | |
tree | cd3d60ca99ae00829c52a6ca79150a5b6e62528b /sql/nt_servc.h | |
parent | Initial commit. (diff) | |
download | mariadb-10.5-upstream/1%10.5.12.tar.xz mariadb-10.5-upstream/1%10.5.12.zip |
Adding upstream version 1:10.5.12.upstream/1%10.5.12upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | sql/nt_servc.h | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/sql/nt_servc.h b/sql/nt_servc.h new file mode 100644 index 00000000..8ba29519 --- /dev/null +++ b/sql/nt_servc.h @@ -0,0 +1,113 @@ +#ifndef NT_SERVC_INCLUDED +#define NT_SERVC_INCLUDED + +/** + @file + + @brief + Windows NT Service class library + + Copyright Abandoned 1998 Irena Pancirov - Irnet Snc + This file is public domain and comes with NO WARRANTY of any kind +*/ + +// main application thread +typedef void (*THREAD_FC)(void *); + +class NTService +{ + public: + NTService(); + ~NTService(); + + BOOL bOsNT; ///< true if OS is NT, false for Win95 + //install optinos + DWORD dwDesiredAccess; + DWORD dwServiceType; + DWORD dwStartType; + DWORD dwErrorControl; + + LPSTR szLoadOrderGroup; + LPDWORD lpdwTagID; + LPSTR szDependencies; + OSVERSIONINFO osVer; + + // time-out (in milisec) + int nStartTimeOut; + int nStopTimeOut; + int nPauseTimeOut; + int nResumeTimeOut; + + // + DWORD my_argc; + LPTSTR *my_argv; + HANDLE hShutdownEvent; + int nError; + DWORD dwState; + + //init service entry point + long Init(LPCSTR szInternName,THREAD_FC ServiceThread); + + //application shutdown event + void SetShutdownEvent(HANDLE hEvent){ hShutdownEvent=hEvent; } + + + //service install / un-install + BOOL Install(int startType,LPCSTR szInternName,LPCSTR szDisplayName, + LPCSTR szFullPath, LPCSTR szAccountName=NULL, + LPCSTR szPassword=NULL); + BOOL SeekStatus(LPCSTR szInternName, int OperationType); + BOOL Remove(LPCSTR szInternName); + BOOL IsService(LPCSTR ServiceName); + BOOL got_service_option(char **argv, const char *service_option); + BOOL is_super_user(); + + /* + SetRunning() is to be called by the application + when initialization completes and it can accept + stop request + */ + void SetRunning(void); + + /** + Sets a timeout after which SCM will abort service startup if SetRunning() + was not called or the timeout was not extended with another call to + SetSlowStarting(). Should be called when static initialization completes, + and the variable initialization part begins + + @arg timeout the timeout to pass to the SCM (in milliseconds) + */ + void SetSlowStarting(unsigned long timeout); + + /* + Stop() is to be called by the application to stop + the service + */ + void Stop(void); + + protected: + LPSTR ServiceName; + HANDLE hExitEvent; + SERVICE_STATUS_HANDLE hServiceStatusHandle; + BOOL bPause; + BOOL bRunning; + HANDLE hThreadHandle; + THREAD_FC fpServiceThread; + + void PauseService(); + void ResumeService(); + void StopService(); + BOOL StartService(); + + static void WINAPI ServiceMain(DWORD argc, LPTSTR *argv); + static void WINAPI ServiceCtrlHandler (DWORD ctrlCode); + + void Exit(DWORD error); + BOOL SetStatus (DWORD dwCurrentState,DWORD dwWin32ExitCode, + DWORD dwServiceSpecificExitCode, + DWORD dwCheckPoint,DWORD dwWaitHint); + +}; +/* ------------------------- the end -------------------------------------- */ + +#endif /* NT_SERVC_INCLUDED */ |