2 * Copyright 2000, International Business Machines Corporation and others.
5 * This software has been released under the terms of the IBM Public
6 * License. For details, see the LICENSE file in the top-level source
7 * directory or online at http://www.openafs.org/dl/license10.html
10 #ifndef AFSCLASS_NOTIFY_H
11 #define AFSCLASS_NOTIFY_H
13 #include <WINNT/afsclass.h>
17 * NOTIFICATION CLASS _________________________________________________________
23 evtCreate, // lpi1 = new object
24 evtDestroy, // lpi1 = object to delete
26 evtInvalidate, // lpi1 = object invalidated
27 evtRefreshStatusBegin, // lpi1 = object to refresh
28 evtRefreshStatusEnd, // lpi1 = object refreshed
29 evtRefreshServersBegin, // lpi1 = parent cell
30 evtRefreshServersEnd, // lpi1 = parent cell
31 evtRefreshServicesBegin, // lpi1 = parent server
32 evtRefreshServicesEnd, // lpi1 = parent server
33 evtRefreshAggregatesBegin, // lpi1 = parent server
34 evtRefreshAggregatesEnd, // lpi1 = parent server
35 evtRefreshFilesetsBegin, // lpi1 = parent aggregate
36 evtRefreshFilesetsEnd, // lpi1 = parent aggregate
37 evtRefreshUsersBegin, // lpi1 = parent cell
38 evtRefreshUsersEnd, // lpi1 = parent cell
40 // For the evtRefreshAll* events, the dw1 parameter accompanying the event
41 // is an integer percentage complete.
43 evtRefreshAllBegin, // lpi1 = object refreshing
44 evtRefreshAllUpdate, // lpi1 = object working now
45 evtRefreshAllSectionStart, // dw2 = section identifier
46 evtRefreshAllSectionEnd, // dw2 = section identifier
49 // For the evtOpenCell* events, the sz1 parameter accompanying the event
50 // is a string reflecting the name of the cell being opened.
52 evtOpenCellBegin, // sz1 = pszCellName
53 evtOpenCellEnd, // sz1 = pszCellName
55 // For the evtSyncVldb* events, the lpi1 parameter accompanying the event
56 // describes the server or aggregate being sync'd.
58 evtSyncVLDBBegin, // lpi1 = server or aggregate
59 evtSyncVLDBEnd, // lpi1 = server or aggregate
61 // For the evtGetServerLogFile events, the sz1 parameter accompanying the
62 // event is a string describing the filename of the log file to be obtained.
63 // The lpi1 parameter accompanying the event indicates the server being
66 evtGetServerLogFileBegin, // lpi1 = server, sz1 = log name
67 evtGetServerLogFileEnd, // lpi1 = server, sz1 = log name
69 // For the evtInstallFile*, evtUninstallFile*, and evtGetFileDates* events,
70 // the lpi1 parameter accompanying the event indicates the server where
71 // the operation is taking place, while the sz1 parameter indicates the
72 // name of the file being manipulated.
74 evtInstallFileBegin, // lpi1 = server, sz1 = filename
75 evtInstallFileEnd, // lpi1 = server, sz1 = filename
77 evtUninstallFileBegin, // lpi1 = server, sz1 = filename
78 evtUninstallFileEnd, // lpi1 = server, sz1 = filename
80 evtGetFileDatesBegin, // lpi1 = server, sz1 = filename
81 evtGetFileDatesEnd, // lpi1 = server, sz1 = filename
83 // For most other evt*Server* events, the lpi1 parameter accompanying
84 // the event indicates the server being changed.
86 evtPruneFilesBegin, // lpi1 = server
87 evtPruneFilesEnd, // lpi1 = server
89 evtSetServerAuthBegin, // lpi1 = server
90 evtSetServerAuthEnd, // lpi1 = server
92 evtGetRestartTimesBegin, // lpi1 = server
93 evtGetRestartTimesEnd, // lpi1 = server
95 evtSetRestartTimesBegin, // lpi1 = server
96 evtSetRestartTimesEnd, // lpi1 = server
98 evtChangeAddressBegin, // lpi1 = server
99 evtChangeAddressEnd, // lpi1 = server
101 // For the evtAdminListLoad* events, the lpi1 parameter accompanying the
102 // event indicates the server from which the admin list is being read.
104 evtAdminListLoadBegin, // lpi1 = server
105 evtAdminListLoadEnd, // lpi1 = server
107 // For most other evtAdminList* events, the lpi1 parameter accompanying
108 // the event indicates the server being manipulated.
110 evtAdminListSaveBegin, // lpi1 = server
111 evtAdminListSaveEnd, // lpi1 = server
113 // For the evtKeyListLoad* events, the lpi1 parameter accompanying the
114 // event indicates the server from which the list of keys is being read.
116 evtKeyListLoadBegin, // lpi1 = server
117 evtKeyListLoadEnd, // lpi1 = server
119 // For the evtHostListLoad* events, the lpi1 parameter accompanying the
120 // event indicates the server from which the host list is being read.
122 evtHostListLoadBegin, // lpi1 = server
123 evtHostListLoadEnd, // lpi1 = server
125 // For most other evtHostList* events, the lpi1 parameter accompanying the
126 // event indicates the server being manipulated.
128 evtHostListSaveBegin, // lpi1 = server
129 evtHostListSaveEnd, // lpi1 = server
131 // For the evtCreateService events, the lpi1 parameter accompanying the
132 // event indicates the parent server, while the sz1 parameter indicates
133 // the name of the service being created.
135 evtCreateServiceBegin, // lpi1 = server, sz1 = service
136 evtCreateServiceEnd, // lpi1 = server, sz1 = service
138 // For most other evt*Service* events, the lpi1 parameter accompanying
139 // the event describes the service being changed.
141 evtDeleteServiceBegin, // lpi1 = service
142 evtDeleteServiceEnd, // lpi1 = service
144 evtStartServiceBegin, // lpi1 = service
145 evtStartServiceEnd, // lpi1 = service
147 evtStopServiceBegin, // lpi1 = service
148 evtStopServiceEnd, // lpi1 = service
150 evtRestartServiceBegin, // lpi1 = service
151 evtRestartServiceEnd, // lpi1 = service
153 // For the evtCreateFileset events, the lpi1 parameter accompanying the
154 // event indicates the parent aggregate, while the sz1 parameter indicates
155 // the name of the fileset.
157 evtCreateFilesetBegin, // lpi1 = aggregate, sz1 = fileset name
158 evtCreateFilesetEnd, // lpi1 = aggregate, sz1 = fileset name
160 // For the evtMoveFileset* events, the lpi1 parameter indicates the fileset
161 // being moved while the lpi2 parameter indicates the target aggregate.
163 evtMoveFilesetBegin, // lpi1 = fileset, lpi2 = aggregate
164 evtMoveFilesetEnd, // lpi1 = fileset, lpi2 = aggregate
166 // For the evtCreateReplica* events, the lpi1 parameter indicates the
167 // fileset being replicated, while the lpi2 parameter indicates the
168 // aggregate on which the new replica will be created.
170 evtCreateReplicaBegin, // lpi1 = fileset, lpi2 = aggregate
171 evtCreateReplicaEnd, // lpi1 = fileset, lpi2 = aggregate
173 // For the evtRenameFileset* events, the lpi1 parameter indicates the
174 // fileset being renamed, while the sz1 parameter indicates the new
175 // name for the fileset.
177 evtRenameFilesetBegin, // lpi1 = fileset, sz1 = new name
178 evtRenameFilesetEnd, // lpi1 = fileset, sz1 = new name
180 // For the evtCloneMultiple* events, the lpi1 parameter accompanying the
181 // event indicates the scope of the operation.
183 evtCloneMultipleBegin, // lpi1 = scope of clonesys
184 evtCloneMultipleEnd, // lpi1 = scope of clonesys
186 // For the evtDumpFileset* events, the lpi1 parameter accompanying the
187 // event indicates the fileset being dumped, while the sz1 parameter
188 // indicates the filename of the dump.
190 evtDumpFilesetBegin, // lpi1 = fileset, sz1 = dump filename
191 evtDumpFilesetEnd, // lpi1 = fileset, sz1 = dump filename
193 // For the evtRestoreFileset* events, the sz1 parameter accompanying the
194 // event indicates the name of the fileset being restored, while the sz2
195 // parameter indicates the name of the dump file being used. The lpi1
196 // parameter indicates the aggregate or fileset on which the restore
197 // operation will be performed.
199 evtRestoreFilesetBegin, // sz1 = fileset name, sz2 = filename
200 evtRestoreFilesetEnd, // sz1 = fileset name, sz2 = filename
202 // For most other evt*Fileset* events, the lpi1 parameter accompanying the
203 // event describes the fileset being changed.
205 evtDeleteFilesetBegin, // lpi1 = fileset
206 evtDeleteFilesetEnd, // lpi1 = fileset
208 evtSetFilesetQuotaBegin, // lpi1 = fileset
209 evtSetFilesetQuotaEnd, // lpi1 = fileset
211 evtLockFilesetBegin, // lpi1 = fileset
212 evtLockFilesetEnd, // lpi1 = fileset
214 evtUnlockFilesetBegin, // lpi1 = fileset
215 evtUnlockFilesetEnd, // lpi1 = fileset
217 evtUnlockAllFilesetsBegin, // lpi1 = cell, server or agg
218 evtUnlockAllFilesetsEnd, // lpi1 = cell, server or agg
220 evtSetFilesetRepParamsBegin, // lpi1 = fileset
221 evtSetFilesetRepParamsEnd, // lpi1 = fileset
223 evtReleaseFilesetBegin, // lpi1 = rw fileset
224 evtReleaseFilesetEnd, // lpi1 = rw fileset
226 evtCloneBegin, // lpi1 = rw fileset
227 evtCloneEnd, // lpi1 = rw fileset
229 evtSetFilesetOwnerGroupBegin, // lpi1 = fileset
230 evtSetFilesetOwnerGroupEnd, // lpi1 = fileset
232 evtSetFilesetPermissionsBegin, // lpi1 = fileset
233 evtSetFilesetPermissionsEnd, // lpi1 = fileset
235 // For the evtExecuteCommand events, the lpi1 parameter accompanying the
236 // event indicates the server on which the command is being executed,
237 // while the sz1 parameter contains the command-line being executed.
239 evtExecuteCommandBegin, // lpi1 = server, sz1 = command
240 evtExecuteCommandEnd, // lpi1 = server, sz1 = command
242 // For the evtSalvage events, the lpi1 parameter accompanying the event
243 // indicates the scope of the salvage--it will point to either a server,
244 // an aggregate, or a volume.
246 evtSalvageBegin, // lpi1 = salvage scope
247 evtSalvageEnd, // lpi1 = salvage scope
249 // For the evtCreateUser events, the lpi1 parameter accompanying the event
250 // indicates the parent cell for the operation, while the sz1 parameter
251 // contains the name of the user being created.
253 evtCreateUserBegin, // lpi1 = cell, sz1 = user name
254 evtCreateUserEnd, // lpi1 = cell, sz1 = user name
256 // For most other evtUser* events, the lpi1 parameter accompanying the
257 // event identifies the user being manipulated.
259 evtChangeUserBegin, // lpi1 = user being changed
260 evtChangeUserEnd, // lpi1 = user being changed
262 evtChangeUserPasswordBegin, // lpi1 = user being changed
263 evtChangeUserPasswordEnd, // lpi1 = user being changed
265 evtDeleteUserBegin, // lpi1 = user being deleted
266 evtDeleteUserEnd, // lpi1 = user being deleted
268 evtUnlockUserBegin, // lpi1 = user being unlocked
269 evtUnlockUserEnd, // lpi1 = user being unlocked
271 // For the evtCreateGroup events, the lpi1 parameter accompanying the event
272 // indicates the parent cell for the operation, while the sz1 parameter
273 // contains the name of the group being created.
275 evtCreateGroupBegin, // lpi1 = cell, sz1 = group name
276 evtCreateGroupEnd, // lpi1 = cell, sz1 = group name
278 // For most other evtGroup* events, the lpi1 parameter accompanying the
279 // event identifies the group being manipulated.
281 evtChangeGroupBegin, // lpi1 = group being changed
282 evtChangeGroupEnd, // lpi1 = group being changed
284 evtRenameGroupBegin, // lpi1 = group being renamed
285 evtRenameGroupEnd, // lpi1 = group being renamed
287 evtDeleteGroupBegin, // lpi1 = group being deleted
288 evtDeleteGroupEnd, // lpi1 = group being deleted
290 // For the evtGroupMemberAdd/Remove* events, the lpi1 parameter
291 // accompanying the event identifies the group being manipulated,
292 // while the lpi2 parameter indicates the user being added or removed.
294 evtGroupMemberAddBegin, // lpi1 = group, lpi2 = user
295 evtGroupMemberAddEnd, // lpi1 = group, lpi2 = user
297 evtGroupMemberRemoveBegin, // lpi1 = group, lpi2 = user
298 evtGroupMemberRemoveEnd, // lpi1 = group, lpi2 = user
300 evtUser = 500 // add any new notifications here
312 } NOTIFYPARAMS, *PNOTIFYPARAMS;
315 typedef BOOL (CALLBACK *NOTIFYCALLBACKPROC)( NOTIFYEVENT evt, PNOTIFYPARAMS pParams );
320 NOTIFYCALLBACK (NOTIFYCALLBACKPROC procUser, LPARAM lpUser);
321 ~NOTIFYCALLBACK (void);
323 BOOL SendNotification (NOTIFYEVENT evt, PNOTIFYPARAMS pParams);
325 static BOOL SendNotificationToAll (NOTIFYEVENT evt, ULONG status = 0);
326 static BOOL SendNotificationToAll (NOTIFYEVENT evt, LPIDENT lpi1, ULONG status = 0);
327 static BOOL SendNotificationToAll (NOTIFYEVENT evt, LPTSTR psz1, ULONG status = 0);
328 static BOOL SendNotificationToAll (NOTIFYEVENT evt, LPIDENT lpi1, LPTSTR psz1, ULONG status);
329 static BOOL SendNotificationToAll (NOTIFYEVENT evt, LPIDENT lpi1, LPIDENT lpi2, LPTSTR psz1, LPTSTR psz2, DWORD dw1, ULONG status);
334 NOTIFYCALLBACKPROC procSupplied;
337 static size_t nNotifyList;
338 static LPNOTIFYCALLBACK *aNotifyList;
342 #endif // AFSCLASS_NOTIFY_H