diff options
author | mor <empty> | 1994-04-12 19:27:51 +0000 |
---|---|---|
committer | mor <empty> | 1994-04-12 19:27:51 +0000 |
commit | a7359c56c8256c571315c6edc98425ae81f4e5e5 (patch) | |
tree | fef917aa263670c75ac8fa86bf5f20af41a7b0e7 | |
parent | dcfa7dc1f74a8a001b6641771dbf4414d3c5a8db (diff) |
latest xsmp changes + some changes for Xt
-rw-r--r-- | xc/doc/specs/SM/SMlib.ms | 433 |
1 files changed, 365 insertions, 68 deletions
diff --git a/xc/doc/specs/SM/SMlib.ms b/xc/doc/specs/SM/SMlib.ms index 1ad0fb931..a96aea616 100644 --- a/xc/doc/specs/SM/SMlib.ms +++ b/xc/doc/specs/SM/SMlib.ms @@ -1,4 +1,4 @@ -.\" $XConsortium$ +.\" $XConsortium: SMlib.ms,v 1.8 94/03/29 18:22:20 mor Exp $ .\" .\" Use tbl, -ms, and macros.t .\" @@ -24,7 +24,7 @@ .TL \s+2\fBX Session Management Library\fP\s-2 .sp -Public Review Draft +Version 0.12 .sp X Consortium Draft Standard .AU @@ -224,10 +224,20 @@ function. .LP .sM .FD 0 -SmcConn SmcOpenConnection\^(\^\fInetwork_ids_list\fP, \fIcallbacks\fP\^, \fIprevious_id\fP\^, \fIclient_id_ret\fP\^, \fIerror_length\fP\^, \fIerror_string_ret\fP\^) +SmcConn SmcOpenConnection\^(\^\fInetwork_ids_list\fP, \fIcontext\fP\^, \fIxsmp_major_rev\fP\^, \fIxsmp_minor_rev\fP\^, +.br + \fImask\fP\^, \fIcallbacks\fP\^, \fIprevious_id\fP\^, \fIclient_id_ret\fP\^, \fIerror_length\fP\^, \fIerror_string_ret\fP\^) .br char *\fInetwork_ids_list\fP\^; .br + SmPointer \fIcontext\fP\^; +.br + int \fIxsmp_major_rev\fP\^; +.br + int \fIxsmp_minor_rev\fP\^; +.br + unsigned long \fImask\fP\^; +.br SmcCallbacks *\fIcallbacks\fP\^; .br char *\fIprevious_id\fP\^; @@ -240,9 +250,19 @@ SmcConn SmcOpenConnection\^(\^\fInetwork_ids_list\fP, \fIcallbacks\fP\^, \fIprev .FN .IP \fInetwork_ids_list\fP 1.1i Specifies the network ID(s) of the session manager. +.IP \fIcontext\fP 1.1i +A pointer to an opaque object, or NULL. Used to determine if an +ICE connection can be shared (see below). +.IP \fIxsmp_major_rev\fP 1.1i +The highest major version of the XSMP the application supports. +.IP \fIxsmp_minor_rev\fP 1.1i +The highest minor version of the XSMP the application supports (for the +specified \fIxsmp_major_rev\fP\^). +.IP \fImask\fP\^ 1.1i +A mask indicating which callbacks to register. .IP \fIcallbacks\fP 1.1i -A set of mandatory callbacks used to respond to messages from the -session manager. +The callbacks to register. These callbacks are used to respond to messages +from the session manager. .IP \fIprevious_id\fP 1.1i The client ID from the previous session. .IP \fIclient_id_ret\fP 1.1i @@ -267,17 +287,13 @@ Each network ID has the form... .TS lw(0.25i) lw(2.5i) lw(1i). tcp/<hostname>:<portnumber> or - decnet/<hostname>::<sm$objname> or + decnet/<hostname>::<objname> or local/<hostname>:<path> .TE .LP An attempt will be made to use the first network ID. If that fails, an attempt will be made using the second network ID, and so on. .LP -Note that if a connection already exists between the client -and the specified session manager, a previously allocated connection -object is returned and this function has no further effect. -.LP After the connection is established, .PN SmcOpenConnection registers the client with the session manager. If the client is being @@ -305,8 +321,18 @@ and the reason for failure is returned in \fIerror_string_ret\fP\^. .LP Note that SMlib uses the ICE protocol to establish a connection with the session manager. If an ICE connection already exists between the -client and session manager, the same ICE connection is used for session -management. Otherwise, a new ICE connection is created. +client and session manager, it might be possible for the same ICE connection +to be used for session management. +.LP +The \fIcontext\fP\^ argument indicates how willing the client is to share +the ICE connection with other protocols. If \fIcontext\fP\^ is +.PN NULL , +then the caller is always willing to share the connection. +If \fIcontext\fP\^ is not +.PN NULL , +then the caller is not willing to use a previously opened ICE connection +that has a different non-NULL context associated with it. +.LP As discussed in the section titled \fIUnderstanding SMlib's Dependence on ICE\fP\^, the client will have to keep track of when ICE connections are created or destroyed (using @@ -320,12 +346,27 @@ Please refer to the \fIInter-Client Exchange Library\fP\^ document for more details. .LP .sp 0.5 -A client must be ready to respond to messages sent by a session manager. -\fIcallbacks\fP\^ contains a set of mandatory callbacks; if any of these -function pointers are -.PN NULL , -.PN SmcOpenConnection -will fail. +\fIcallbacks\fP\^ contains a set of callbacks used to respond to session +manager events. The \fImask\fP\^ argument specifies which callbacks are set. +All of the callbacks specified in this version of SMlib are mandatory. The +\fImask\fP\^ argument is necessary in order to maintain backwards compatibility +in future versions of the library. +.LP +The following values may be ORed together to obtain a mask value: +.LP + +.PN SmcSaveYourselfProcMask +.br + +.PN SmcDieProcMask +.br + +.PN SmcSaveCompleteProcMask +.br + +.PN SmcShutdownCancelledProcMask +.LP + .LP For each callback, the client can register a pointer to client data. When SMlib invokes the callback, it will pass the client data pointer. @@ -351,6 +392,14 @@ When SMlib invokes the callback, it will pass the client data pointer. .sp 0.5 struct { .br + SmcSaveCompleteProc callback; +.br + SmPointer client_data; +.br + } save_complete; +.sp 0.5 + struct { +.br SmcShutdownCancelledProc callback; .br SmPointer client_data; @@ -476,11 +525,11 @@ property with enough information to find the temporary file. .sp 0.5 The \fIshutdown\fP\^ parameter specifies whether the system is being shut down. The interaction is different depending on whether or not -\fIshutdown\fP\^ is set. If not shutting down, then the client can save and -resume normal operation. If shutting down, the client must save and -then must prevent interaction until it receives either a \fIDie\fP\^ -or a \fP\^Shutdown Cancelled\fP\^, because anything the user does after -the save will be lost. +\fIshutdown\fP\^ is set. If not shutting down, the client should save its +state and wait for a \fISave Complete\fP\^ message. If shutting down, +the client must save state and +then prevent interaction until it receives either a \fIDie\fP\^ +or a \fP\^Shutdown Cancelled\fP\^. .LP The \fIfast\fP\^ parameter specifies that the client should save its state as quickly as possible. For example, if the session manager knows that @@ -519,6 +568,35 @@ A session manager that behaves properly will send a \fISave Yourself\fP\^ message before the \fIDie\fP\^ message. .LP .NH 3 +The Save Complete Callback +.XS +\*(SN The Save Complete Callback +.XE +.LP +The \fISave Complete\fP\^ callback is of type +.PN SmcSaveCompleteProc . +.LP +.sM +typedef void (*SmcSaveCompleteProc)(); +.LP +.FD 0 +void SaveCompleteProc\^(\^\fIsmc_conn\fP, \fIclient_data\fP\^) +.br + SmcConn \fIsmc_conn\fP\^; +.br + SmPointer \fIclient_data\fP\^; +.FN +.IP \fIsmc_conn\fP 1i +The session management connection object. +.IP \fIclient_data\fP 1i +Client data specified when the callback was registered. +.LP +.eM +When the session manager is done with a checkpoint, it will send each of +the clients a \fISave Complete\fP\^ message. The client is then free to +change its state. +.LP +.NH 3 The Shutdown Cancelled Callback .XS \*(SN The Shutdown Cancelled Callback @@ -569,7 +647,7 @@ function. .LP .sM .FD 0 -void SmcCloseConnection\^(\^\fIsmc_conn\fP, \fIcount\fP\^, \fIreason_msgs\fP\^) +SmcCloseStatus SmcCloseConnection\^(\^\fIsmc_conn\fP, \fIcount\fP\^, \fIreason_msgs\fP\^) .br SmcConn \fIsmc_conn\fP\^; .br @@ -609,6 +687,41 @@ descriptor from the list of active descriptors to select() on (or calls / .PN XtRemoveInput ). .LP +.sp 0.5 +.PN SmcCloseConnection +returns one of the following values: +.LP +.TS +lw(2i) lw(4i). +T{ +.PN SmcClosedNow : +T} T{ +The ICE connection was closed at this time. The watch procedures were +invoked and the connection was freed. +T} +.sp 4p +T{ +.PN SmcClosedASAP : +T} T{ +An IO error had occurred on the connection, but +.PN SmcCloseConnection +is being called within a nested +.PN IceProcessMessages . +The watch procedures have been invoked at this time, but the connection +will be freed as soon as possible (when the nesting level reaches zero and +.PN IceProcessMessages +returns a status of +.PN IceProcessMessagesConnectionClosed ). +T} +.sp 4p +T{ +.PN SmcConnectionInUse : +T} T{ +The connection was not closed at this time because it is being used by +other active protocols. +T} +.TE +.LP .NH 2 Modifying callbacks .XS @@ -631,6 +744,7 @@ void SmcModifyCallbacks\^(\^\fIsmc_conn\fP, \fImask\fP\^, \fIcallbacks\fP\^) .br SmcCallbacks *\fIcallbacks\fP\^; .FN +.bp .IP \fIsmc_conn\fP 1i The session management connection object. .IP \fImask\fP 1i @@ -649,6 +763,9 @@ values may be ORed together: .PN SmcDieProcMask .br +.PN SmcSaveCompleteProcMask +.br + .PN SmcShutdownCancelledProcMask .LP .NH 2 @@ -719,7 +836,7 @@ To get properties previously stored by the client, call the function. .sM .FD 0 -void SmcGetProperties\^(\^\fIsmc_conn\fP, \fIprop_reply_proc\fP\^, \fIclient_data\fP\^) +Status SmcGetProperties\^(\^\fIsmc_conn\fP, \fIprop_reply_proc\fP\^, \fIclient_data\fP\^) .br SmcConn \fIsmc_conn\fP\^; .br @@ -727,6 +844,7 @@ void SmcGetProperties\^(\^\fIsmc_conn\fP, \fIprop_reply_proc\fP\^, \fIclient_dat .br SmPointer \fIclient_data\fP\^; .FN +.bp .IP \fIsmc_conn\fP 1.1i The session management connection object. .IP \fIprop_reply_proc\fP 1.1i @@ -737,12 +855,15 @@ This pointer to client data will be passed to the callback. .LP .eM +The return value of +.PN SmcGetProperties +is zero for failure, and a positive value for success. +.LP Note that the library does not block until the properties reply comes back. Rather, a callback of type .PN SmcPropReplyProc is invoked when the data is ready. .LP -.bp .sM typedef void (*SmcPropReplyProc)(); .LP @@ -790,7 +911,7 @@ must call and wait for an \fIInteract\fP\^ message from the session manager. .sM .FD 0 -void SmcInteractRequest\^(\^\fIsmc_conn\fP, \fIdialog_type\fP\^, \fIinteract_proc\fP\^, \fIclient_data\fP\^) +Status SmcInteractRequest\^(\^\fIsmc_conn\fP, \fIdialog_type\fP\^, \fIinteract_proc\fP\^, \fIclient_data\fP\^) .br SmcConn \fIsmc_conn\fP\^; .br @@ -813,6 +934,10 @@ This pointer to client data will be passed to the callback when the \fIInteract\fP\^ message arrives. .LP .eM +The return value of +.PN SmcInteractRequest +is zero for failure, and a positive value for success. +.LP The \fIdialog_type\fP argument specifies either .PN SmDialogError indicating that the client wants to start an error dialog, @@ -927,7 +1052,7 @@ If \fIglobal\fP\^ is set to .PN True , then the resulting \fISave Yourself\fP\^ should be sent to all clients in the session. For example, a vendor of a -UPS (Uninteruptible Power Supply) might include an +UPS (Uninterruptible Power Supply) might include an SM client that would monitor the status of the UPS and generate a fast shutdown if the power is about to be lost. .LP @@ -937,6 +1062,48 @@ then the \fISave Yourself\fP\^ should only be sent to the client which requested the \fISave Yourself\fP\^. .LP .NH 2 +Requesting a Save Yourself Phase 2 +.XS +\*(SN Requesting a Save Yourself Phase 2 +.XE +.LP +In response to a \fISave Yourself\fP\^, the client may request to be informed +when all the other clients are quiescent so it can save their state. To +do so, the +.PN SmcRequestSaveYourselfPhase2 +function should be called. +.LP +.sM +.FD 0 +Status SmcRequestSaveYourselfPhase2\^(\^\fIsmc_conn\fP, \fIsave_yourself_phase2_proc\fP\^, \fIclient_data\fP\^) +.br + SmcConn \fIsmc_conn\fP\^; +.br + SmcSaveYourselfPhase2Proc \fIsave_yourself_phase2_proc\fP\^; +.br + SmPointer \fIclient_data\fP\^; +.FN +.IP \fIsmc_conn\fP 1i +The session management connection object. +.IP \fIsave_yourself_phase2_proc\fP 1i +The callback to be invoked when the \fISave Yourself Phase 2\fP\^ message +arrives from the session manager. +.IP \fIclient_data\fP 1i +This pointer to client data will be passed to the +.PN SmcSaveYourselfPhase2Proc +callback when the \fISave Yourself Phase 2\fP\^ message arrives. +.LP +.eM +The return value of +.PN SmcRequestSaveYourselfPhase2 +is zero for failure, and a positive value for success. +.LP +This request is needed by clients that manage other clients (e.g. window +managers, workspace managers, etc.). The manager must make sure that all +of the clients that are being managed are in an idle state, so that their +state can be saved. +.LP +.NH 2 Completing a Save Yourself .XS \*(SN Completing a Save Yourself @@ -1047,7 +1214,6 @@ IceConnectionString, IceLastSentSequenceNumber, IceLastReceivedSequenceNumber, and IcePing. Check the ICElib documentation for more details on these functions. .LP -.bp .NH 2 Error Handling .XS @@ -1056,8 +1222,8 @@ Error Handling .LP If the client receives an unexpected protocol error from the session manager, an error handler is invoked by SMlib. A default error handler exists which -simply prints the error message and exits. The client can change this error -handler by calling the +simply prints the error message to stderr and exits if the severity of the +error is fatal. The client can change this error handler by calling the .PN SmcSetErrorHandler function. .LP @@ -1101,6 +1267,7 @@ void ErrorHandler\^(\^\fIsmc_conn\fP, \fIswap\fP\^, \fIoffending_minor_opcode\fP .br IcePointer \fIvalues\fP\^; .FN +.bp .IP \fIsmc_conn\fP 1i The session management connection object. .IP \fIswap\fP 1i @@ -1189,10 +1356,8 @@ After the .PN SmsInitialize function is called, the session manager should call the .PN IceListenForConnections -function to listen for new connections. Next, it should call -.PN IceSetPaAuthData -to provide authentication data to the ICE library. -Afterwards, each time a client connects, the session manager should call +function to listen for new connections. Afterwards, each time a +client connects, the session manager should call .PN IceAcceptConnection . .LP Refer to the section of this document titled \fIAuthentication of Clients\fP\^ @@ -1209,26 +1374,80 @@ this time, the session manager must also register a set of callbacks to respond to the different messages that the client might send. .LP .sM -typedef void (*SmsNewClientProc)(); +typedef Status (*SmsNewClientProc)(); .LP .FD 0 -void NewClientProc\^(\^\fIsms_conn\fP, \fImanager_data\fP\^, \fIcallbacks_ret\fP\^) +Status NewClientProc\^(\^\fIsms_conn\fP, \fImanager_data\fP\^, \fImask_ret\fP\^, \fIcallbacks_ret\fP\^, \fIfailure_reason_ret\fP\^) .br SmsConn \fIsms_conn\fP\^; .br SmPointer \fImanager_data\fP\^; .br + unsigned long *\fImask_ret\fP\^; +.br SmsCallbacks *\fIcallbacks_ret\fP\^; +.br + char **\fIfailure_reason_ret\fP\^; .FN .bp -.IP \fIsms_conn\fP 1i +.IP \fIsms_conn\fP 1.1i A new opaque connection object. -.IP \fImanager_data\fP 1i +.IP \fImanager_data\fP 1.1i Manager data specified when the callback was registered. -.IP \fIcallbacks_ret\fP 1i -Mandatory set of callbacks to be registered by the session manager. +.IP \fImask_ret\fP 1.1i +On return, indicates which callbacks were set by the session manager. +.IP \fIcallbacks_ret\fP 1.1i +On return, contains the callbacks registered by the session manager. +.IP \fIfailure_reason_ret\fP 1.1i +Failure reason returned. .LP .eM +If a failure occurs, the +.PN SmsNewClientProc +should return a zero status, as well as allocate and return a failure +reason string in \fIfailure_reason_ret\fP\^. SMlib will be +responsible for freeing this memory. +.LP +The session manager must register a set of callbacks to respond to client +events. The \fImask_ret\fP\^ argument specifies which callbacks are set. +All of the callbacks specified in this version of SMlib are mandatory. The +\fImask_ret\fP\^ argument is necessary in order to maintain backwards +compatibility in future versions of the library. +.LP +The following values may be ORed together to obtain a mask value: +.LP + +.PN SmsRegisterClientProcMask +.br + +.PN SmsInteractRequestProcMask +.br + +.PN SmsInteractDoneProcMask +.br + +.PN SmsSaveYourselfRequestProcMask +.br + +.PN SmsSaveYourselfP2RequestProcMask +.br + +.PN SmsSaveYourselfDoneProcMask +.br + +.PN SmsCloseConnectionProcMask +.br + +.PN SmsSetPropertiesProcMask +.br + +.PN SmsDeletePropertiesProcMask +.br + +.PN SmsGetPropertiesProcMask +.LP + +.LP For each callback, the session manager can register a pointer to manager data specific to that callback. This pointer will be passed to the callback when it is invoked by SMlib. @@ -1270,6 +1489,15 @@ when it is invoked by SMlib. .sp 0.5 struct { .br + SmsSaveYourselfPhase2RequestProc callback; +.br + SmPointer manager_data; +.br + } save_yourself_phase2_request; +.bp + + struct { +.br SmsSaveYourselfDoneProc callback; .br SmPointer manager_data; @@ -1456,6 +1684,7 @@ or .PN SmInteractStyleAny for the \fIinteract_style\fP\^. .LP +.bp .NH 3 The Save Yourself Request Callback .XS @@ -1518,6 +1747,36 @@ then the \fISave Yourself\fP\^ should only be sent to the client which requested the \fISave Yourself\fP\^. .LP .NH 3 +The Save Yourself Phase 2 Request Callback +.XS +\*(SN The Save Yourself Phase 2 Request Callback +.XE +.LP +The \fISave Yourself Phase 2 Request\fP\^ callback is of type +.PN SmsSaveYourselfPhase2RequestProc . +.LP +.sM +typedef void (*SmsSaveYourselfPhase2RequestProc)(); +.LP +.FD 0 +void SmsSaveYourselfPhase2RequestProc\^(\^\fIsms_conn\fP, \fImanager_data\fP\^) +.br + SmsConn \fIsms_conn\fP\^; +.br + SmPointer \fImanager_data\fP\^; +.FN +.IP \fIsms_conn\fP 1i +The session management connection object. +.IP \fImanager_data\fP 1i +Manager data specified when the callback was registered. +.LP +.eM +This request is sent by clients that manage other clients (e.g. window +managers, workspace managers, etc.). Such managers must make sure that all +of the clients that are being managed are in an idle state, so that their +state can be saved. +.LP +.NH 3 The Save Yourself Done Callback .XS \*(SN The Save Yourself Done Callback @@ -1737,7 +1996,7 @@ function. .LP .sM .FD 0 -void SmsRegisterClientReply\^(\^\fIsms_conn\fP, \fIclient_id\fP\^) +Status SmsRegisterClientReply\^(\^\fIsms_conn\fP, \fIclient_id\fP\^) .br SmsConn \fIsms_conn\fP\^; .br @@ -1749,6 +2008,12 @@ The session management connection object. A null terminated string representing a unique client ID. .LP .eM +The return value of +.PN SmsRegisterClientReply +is zero for failure, and a positive value for success. Failure will +occur if SMlib can not allocate memory to hold a copy of the client ID +for it's own internal needs. +.LP If a non-NULL \fIprevious_id\fP\^ was specified when the client registered itself, \fIclient_id\fP\^ should be identical to \fIprevious_id\fP\^. .LP @@ -1771,6 +2036,7 @@ Call the .PN SmsGenerateClientID function to generate a globally unique client ID. .LP +.sp 0.5 .sM .FD 0 char *SmsGenerateClientID\^(\^\fIsms_conn\fP\^) @@ -1810,6 +2076,7 @@ void SmsSaveYourself\^(\^\fIsms_conn\fP, \fIsave_type\fP\^, \fIshutdown\fP\^, \f .br Bool \fIfast\fP\^; .FN +.bp .IP \fIsms_conn\fP 1i The session management connection object. .IP \fIsave_type\fP 1i @@ -1877,6 +2144,31 @@ power is about to fail, it should set \fIfast\fP\^ to .PN True . .LP .NH 2 +Sending a Save Yourself Phase 2 Message +.XS +\*(SN Sending a Save Yourself Phase 2 Message +.XE +.LP +In order to send a \fISave Yourself Phase 2\fP\^ message to a client, call the +.PN SmsSaveYourselfPhase2 +function. +.LP +.sM +.FD 0 +void SmsSaveYourselfPhase2\^(\^\fIsms_conn\fP\^) +.br + SmsConn \fIsms_conn\fP\^; +.FN +.IP \fIsms_conn\fP 1i +The session management connection object. +.LP +.eM +The session manager sends this message to a client that has previously sent a +\fISave Yourself Phase 2 Request\fP\^ message. This message informs the +client that all other clients are in a fixed state and this client can save +state that is associated with other clients. +.LP +.NH 2 Sending an Interact Message .XS \*(SN Sending an Interact Message @@ -1885,6 +2177,7 @@ Sending an Interact Message To send an \fIInteract\fP\^ message to a client, call the .PN SmsInteract function. +.bp .sM .FD 0 void SmsInteract\^(\^\fIsms_conn\fP\^) @@ -1899,7 +2192,29 @@ The \fIInteract\fP\^ message grants the client the privilege of interacting with the user. When the client is done interacting with the user, it must send an \fIInteract Done\fP\^ message to the session manager. .LP -.bp +.NH 2 +Sending a Save Complete Message +.XS +\*(SN Sending a Save Complete Message +.XE +.LP +To send a \fISave Complete\fP\^ message to a client, call the +.PN SmsSaveComplete +function. +.LP +.sM +.FD 0 +void SmsSaveComplete\^(\^\fIsms_conn\fP\^) +.br + SmsConn \fIsms_conn\fP\^; +.FN +.IP \fIsms_conn\fP 1i +The session management connection object. +.LP +.eM +The session manager sends this message when it is done with a checkpoint. +The client is then free to change its state. +.LP .NH 2 Sending a Die Message .XS @@ -2023,7 +2338,7 @@ callback. When the Ping reply is ready (if ever), the .PN IcePingReplyProc callback will be invoked. A session manager should have some sort -of timeout period, after which it assumes the client has unexpectidly died. +of timeout period, after which it assumes the client has unexpectedly died. .LP .sM typedef void (*IcePingReplyProc)(); @@ -2094,28 +2409,6 @@ Returns the minor version of the session management protocol associated with this session. .LP .sp 0.5 -.sM -.FD 0 -char *SmsVendor\^(\^\fIsms_conn\fP\^) -.br - SmsConn \fIsms_conn\fP\^; -.FN -.eM -Returns a string that provides some identification of the owner of -the SMlib being used by the client. The string should be freed with -a call to free(). -.LP -.sp 0.5 -.sM -.FD 0 -char *SmsRelease\^(\^\fIsms_conn\fP\^) -.br - SmsConn \fIsms_conn\fP\^; -.FN -.eM -Returns a string that provides some identification of the release -number of the SMlib being used by the client. The string should be -freed with a call to free(). .LP .sp 0.5 .sM @@ -2162,7 +2455,6 @@ functions which can be used on the IceConn are IceConnectionNumber, and IceLastSequenceNumber. Check the \fIInter-Client Exchange Library\fP\^ document for more details on these functions. .LP -.bp .NH 2 Error Handling .XS @@ -2276,7 +2568,7 @@ structure: .sp 0.5 The X Session Management Protocol defines a list of predefined properties, several of which are required to be set by the client. Below is a table -which specifes the predefined properties, indicating which ones are required. +which specifies the predefined properties, indicating which ones are required. Each property has a type associated with it. .LP A type of @@ -2404,6 +2696,7 @@ _ SmRestartIfRunning 0 SmRestartAnyway 1 SmRestartImmediately 2 +SmRestartNever 3 .sp 6p _ .TE @@ -2438,6 +2731,10 @@ style is like but in addition, the client is meant to run continuously. If the client exits, the SM should try to restart it in the current session. +.LP +.PN SmRestartNever +style specifies that the client +does not wish to be restarted in the next session. .RE .IP SmShutdownCommand This command is executed at shutdown time to clean up after a client that |