3 Copyright 1993, 1998 The Open Group
5 Permission to use, copy, modify, distribute, and sell this software and its
6 documentation for any purpose is hereby granted without fee, provided that
7 the above copyright notice appear in all copies and that both that
8 copyright notice and this permission notice appear in supporting
11 The above copyright notice and this permission notice shall be included in
12 all copies or substantial portions of the Software.
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
18 AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 Except as contained in this notice, the name of The Open Group shall not be
22 used in advertising or otherwise to promote the sale, use or other dealings
23 in this Software without prior written authorization from The Open Group.
28 * Author: Ralph Mor, X Consortium
34 #include <X11/SM/SM.h>
35 #include <X11/ICE/ICElib.h>
42 typedef IcePointer SmPointer;
46 * Connection objects. Defined in SMlibint.h
49 typedef struct _SmcConn *SmcConn;
50 typedef struct _SmsConn *SmsConn;
54 * Session Management property
58 int length; /* length (in bytes) of the value */
59 SmPointer value; /* the value */
63 char *name; /* name of property */
64 char *type; /* type of property */
65 int num_vals; /* number of values in property */
66 SmPropValue *vals; /* the values */
72 * SmcCloseConnection status return
87 typedef void (*SmcSaveYourselfProc) (
88 SmcConn /* smcConn */,
89 SmPointer /* clientData */,
92 int /* interactStyle */,
96 typedef void (*SmcSaveYourselfPhase2Proc) (
97 SmcConn /* smcConn */,
98 SmPointer /* clientData */
101 typedef void (*SmcInteractProc) (
102 SmcConn /* smcConn */,
103 SmPointer /* clientData */
106 typedef void (*SmcDieProc) (
107 SmcConn /* smcConn */,
108 SmPointer /* clientData */
111 typedef void (*SmcShutdownCancelledProc) (
112 SmcConn /* smcConn */,
113 SmPointer /* clientData */
116 typedef void (*SmcSaveCompleteProc) (
117 SmcConn /* smcConn */,
118 SmPointer /* clientData */
121 typedef void (*SmcPropReplyProc) (
122 SmcConn /* smcConn */,
123 SmPointer /* clientData */,
125 SmProp ** /* props */
130 * Callbacks set up at SmcOpenConnection time
136 SmcSaveYourselfProc callback;
137 SmPointer client_data;
142 SmPointer client_data;
146 SmcSaveCompleteProc callback;
147 SmPointer client_data;
151 SmcShutdownCancelledProc callback;
152 SmPointer client_data;
153 } shutdown_cancelled;
157 #define SmcSaveYourselfProcMask (1L << 0)
158 #define SmcDieProcMask (1L << 1)
159 #define SmcSaveCompleteProcMask (1L << 2)
160 #define SmcShutdownCancelledProcMask (1L << 3)
165 * Session manager callbacks
168 typedef Status (*SmsRegisterClientProc) (
169 SmsConn /* smsConn */,
170 SmPointer /* managerData */,
171 char * /* previousId */
174 typedef void (*SmsInteractRequestProc) (
175 SmsConn /* smsConn */,
176 SmPointer /* managerData */,
180 typedef void (*SmsInteractDoneProc) (
181 SmsConn /* smsConn */,
182 SmPointer /* managerData */,
183 Bool /* cancelShutdown */
186 typedef void (*SmsSaveYourselfRequestProc) (
187 SmsConn /* smsConn */,
188 SmPointer /* managerData */,
191 int /* interactStyle */,
196 typedef void (*SmsSaveYourselfPhase2RequestProc) (
197 SmsConn /* smsConn */,
198 SmPointer /* managerData */
201 typedef void (*SmsSaveYourselfDoneProc) (
202 SmsConn /* smsConn */,
203 SmPointer /* managerData */,
207 typedef void (*SmsCloseConnectionProc) (
208 SmsConn /* smsConn */,
209 SmPointer /* managerData */,
211 char ** /* reasonMsgs */
214 typedef void (*SmsSetPropertiesProc) (
215 SmsConn /* smsConn */,
216 SmPointer /* managerData */,
218 SmProp ** /* props */
221 typedef void (*SmsDeletePropertiesProc) (
222 SmsConn /* smsConn */,
223 SmPointer /* managerData */,
225 char ** /* propNames */
228 typedef void (*SmsGetPropertiesProc) (
229 SmsConn /* smsConn */,
230 SmPointer /* managerData */
235 * Callbacks set up by a session manager when a new client connects.
241 SmsRegisterClientProc callback;
242 SmPointer manager_data;
246 SmsInteractRequestProc callback;
247 SmPointer manager_data;
251 SmsInteractDoneProc callback;
252 SmPointer manager_data;
256 SmsSaveYourselfRequestProc callback;
257 SmPointer manager_data;
258 } save_yourself_request;
261 SmsSaveYourselfPhase2RequestProc callback;
262 SmPointer manager_data;
263 } save_yourself_phase2_request;
266 SmsSaveYourselfDoneProc callback;
267 SmPointer manager_data;
268 } save_yourself_done;
271 SmsCloseConnectionProc callback;
272 SmPointer manager_data;
276 SmsSetPropertiesProc callback;
277 SmPointer manager_data;
281 SmsDeletePropertiesProc callback;
282 SmPointer manager_data;
286 SmsGetPropertiesProc callback;
287 SmPointer manager_data;
293 #define SmsRegisterClientProcMask (1L << 0)
294 #define SmsInteractRequestProcMask (1L << 1)
295 #define SmsInteractDoneProcMask (1L << 2)
296 #define SmsSaveYourselfRequestProcMask (1L << 3)
297 #define SmsSaveYourselfP2RequestProcMask (1L << 4)
298 #define SmsSaveYourselfDoneProcMask (1L << 5)
299 #define SmsCloseConnectionProcMask (1L << 6)
300 #define SmsSetPropertiesProcMask (1L << 7)
301 #define SmsDeletePropertiesProcMask (1L << 8)
302 #define SmsGetPropertiesProcMask (1L << 9)
306 typedef Status (*SmsNewClientProc) (
307 SmsConn /* smsConn */,
308 SmPointer /* managerData */,
309 unsigned long * /* maskRet */,
310 SmsCallbacks * /* callbacksRet */,
311 char ** /* failureReasonRet */
320 typedef void (*SmcErrorHandler) (
321 SmcConn /* smcConn */,
323 int /* offendingMinorOpcode */,
324 unsigned long /* offendingSequence */,
325 int /* errorClass */,
327 SmPointer /* values */
330 typedef void (*SmsErrorHandler) (
331 SmsConn /* smsConn */,
333 int /* offendingMinorOpcode */,
334 unsigned long /* offendingSequence */,
335 int /* errorClass */,
337 SmPointer /* values */
343 * Function Prototypes
348 extern SmcConn SmcOpenConnection (
349 char * /* networkIdsList */,
350 SmPointer /* context */,
351 int /* xsmpMajorRev */,
352 int /* xsmpMinorRev */,
353 unsigned long /* mask */,
354 SmcCallbacks * /* callbacks */,
355 char * /* previousId */,
356 char ** /* clientIdRet */,
357 int /* errorLength */,
358 char * /* errorStringRet */
361 extern SmcCloseStatus SmcCloseConnection (
362 SmcConn /* smcConn */,
364 char ** /* reasonMsgs */
367 extern void SmcModifyCallbacks (
368 SmcConn /* smcConn */,
369 unsigned long /* mask */,
370 SmcCallbacks * /* callbacks */
373 extern void SmcSetProperties (
374 SmcConn /* smcConn */,
376 SmProp ** /* props */
379 extern void SmcDeleteProperties (
380 SmcConn /* smcConn */,
382 char ** /* propNames */
385 extern Status SmcGetProperties (
386 SmcConn /* smcConn */,
387 SmcPropReplyProc /* propReplyProc */,
388 SmPointer /* clientData */
391 extern Status SmcInteractRequest (
392 SmcConn /* smcConn */,
393 int /* dialogType */,
394 SmcInteractProc /* interactProc */,
395 SmPointer /* clientData */
398 extern void SmcInteractDone (
399 SmcConn /* smcConn */,
400 Bool /* cancelShutdown */
403 extern void SmcRequestSaveYourself (
404 SmcConn /* smcConn */,
407 int /* interactStyle */,
412 extern Status SmcRequestSaveYourselfPhase2 (
413 SmcConn /* smcConn */,
414 SmcSaveYourselfPhase2Proc /* saveYourselfPhase2Proc */,
415 SmPointer /* clientData */
418 extern void SmcSaveYourselfDone (
419 SmcConn /* smcConn */,
423 extern int SmcProtocolVersion (
424 SmcConn /* smcConn */
427 extern int SmcProtocolRevision (
428 SmcConn /* smcConn */
431 extern char *SmcVendor (
432 SmcConn /* smcConn */
435 extern char *SmcRelease (
436 SmcConn /* smcConn */
439 extern char *SmcClientID (
440 SmcConn /* smcConn */
443 extern IceConn SmcGetIceConnection (
444 SmcConn /* smcConn */
447 extern Status SmsInitialize (
449 char * /* release */,
450 SmsNewClientProc /* newClientProc */,
451 SmPointer /* managerData */,
452 IceHostBasedAuthProc /* hostBasedAuthProc */,
453 int /* errorLength */,
454 char * /* errorStringRet */
457 extern char *SmsClientHostName (
458 SmsConn /* smsConn */
461 extern char *SmsGenerateClientID (
462 SmsConn /* smsConn */
465 extern Status SmsRegisterClientReply (
466 SmsConn /* smsConn */,
467 char * /* clientId */
470 extern void SmsSaveYourself (
471 SmsConn /* smsConn */,
474 int /* interactStyle */,
478 extern void SmsSaveYourselfPhase2 (
479 SmsConn /* smsConn */
482 extern void SmsInteract (
483 SmsConn /* smsConn */
487 SmsConn /* smsConn */
490 extern void SmsSaveComplete (
491 SmsConn /* smsConn */
494 extern void SmsShutdownCancelled (
495 SmsConn /* smsConn */
498 extern void SmsReturnProperties (
499 SmsConn /* smsConn */,
501 SmProp ** /* props */
504 extern void SmsCleanUp (
505 SmsConn /* smsConn */
508 extern int SmsProtocolVersion (
509 SmsConn /* smsConn */
512 extern int SmsProtocolRevision (
513 SmsConn /* smsConn */
516 extern char *SmsClientID (
517 SmsConn /* smsConn */
520 extern IceConn SmsGetIceConnection (
521 SmsConn /* smsConn */
524 extern SmcErrorHandler SmcSetErrorHandler (
525 SmcErrorHandler /* handler */
528 extern SmsErrorHandler SmsSetErrorHandler (
529 SmsErrorHandler /* handler */
532 extern void SmFreeProperty (
536 extern void SmFreeReasons (
538 char ** /* reasonMsgs */
543 #endif /* _SMLIB_H_ */