Initial IBM OpenAFS 1.0 tree
[openafs.git] / src / WINNT / afsclass / c_svc.h
1 #ifndef AFSCLASS_SERVICE_H
2 #define AFSCLASS_SERVICE_H
3
4 #include <WINNT/afsclass.h>
5
6
7 /*
8  * SERVICE CLASS ______________________________________________________________
9  *
10  */
11
12 typedef enum
13    {
14    SERVICETYPE_SIMPLE,
15    SERVICETYPE_FS,
16    SERVICETYPE_CRON
17    } SERVICETYPE;
18
19 typedef enum
20    {
21    SERVICESTATE_RUNNING,
22    SERVICESTATE_STOPPED,
23    SERVICESTATE_STARTING,
24    SERVICESTATE_STOPPING
25    } SERVICESTATE;
26
27 typedef struct
28    {
29    TCHAR szAuxStatus[ cchRESOURCE ];
30    TCHAR szParams[ cchRESOURCE ];
31    TCHAR szNotifier[ cchRESOURCE ];
32    SYSTEMTIME timeLastStart;
33    SYSTEMTIME timeLastStop;
34    SYSTEMTIME timeLastFail;
35    ULONG nStarts;
36    ULONG dwErrLast;
37    ULONG dwSigLast;
38    SERVICETYPE type;
39    SERVICESTATE state;
40    } SERVICESTATUS, *LPSERVICESTATUS;
41
42 typedef struct
43    {
44 #define ENCRYPTIONKEY_LEN 8
45    BYTE key[ ENCRYPTIONKEY_LEN ];
46    } ENCRYPTIONKEY, *LPENCRYPTIONKEY;
47
48 typedef struct
49    {
50    SYSTEMTIME timeLastModification;
51    DWORD dwChecksum;
52    } ENCRYPTIONKEYINFO, *LPENCRYPTIONKEYINFO;
53
54 class SERVICE
55    {
56    friend class CELL;
57    friend class SERVER;
58    friend class IDENT;
59
60    public:
61       void Close (void);
62       void Invalidate (void);
63       BOOL RefreshStatus (BOOL fNotify = TRUE, ULONG *pStatus = NULL);  // does nothing if not invalidated
64
65       // Service properties
66       //
67       LPIDENT GetIdentifier (void);
68       LPCELL OpenCell (ULONG *pStatus = NULL);
69       LPSERVER OpenServer (ULONG *pStatus = NULL);
70       void GetName (LPTSTR pszName);
71
72       BOOL GetStatus (LPSERVICESTATUS lpss, BOOL fNotify = TRUE, ULONG *pStatus = NULL);
73
74       PVOID GetUserParam (void);
75       void SetUserParam (PVOID pUserParam);
76
77    // Private functions
78    //
79    private:
80       SERVICE (LPSERVER lpServerParent, LPTSTR pszName);
81       ~SERVICE (void);
82       void SendDeleteNotifications (void);
83
84    // Private data
85    //
86    private:
87       LPIDENT m_lpiCell;
88       LPIDENT m_lpiServer;
89       LPIDENT m_lpiThis;
90       TCHAR   m_szName[ cchNAME ];
91
92       BOOL m_fStatusOutOfDate;
93       SERVICESTATUS m_ss;
94    };
95
96
97 #endif // AFSCLASS_SERVICE_H
98