|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
|
|
Packit Service |
752078 |
[
|
|
Packit Service |
752078 |
%defs;
|
|
Packit Service |
752078 |
]>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<book id="xsmp">
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<bookinfo>
|
|
Packit Service |
752078 |
<title>X Session Management Protocol</title>
|
|
Packit Service |
752078 |
<subtitle>X Consortium Standard</subtitle>
|
|
Packit Service |
752078 |
<releaseinfo>X Version 11, Release &fullrelvers;</releaseinfo>
|
|
Packit Service |
752078 |
<releaseinfo>Version 1.0</releaseinfo>
|
|
Packit Service |
752078 |
<authorgroup>
|
|
Packit Service |
752078 |
<author>
|
|
Packit Service |
752078 |
<firstname>Mike</firstname><surname>Wexler</surname>
|
|
Packit Service |
752078 |
<affiliation><orgname>Kubota Pacific Computer, Inc</orgname></affiliation>
|
|
Packit Service |
752078 |
</author>
|
|
Packit Service |
752078 |
</authorgroup>
|
|
Packit Service |
752078 |
<copyright>
|
|
Packit Service |
752078 |
<year>1992</year><year>1993</year><year>1994</year><year>2002</year>
|
|
Packit Service |
752078 |
<holder>The Open Group</holder>
|
|
Packit Service |
752078 |
</copyright>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<legalnotice>
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
Permission is hereby granted, free of charge, to any person
|
|
Packit Service |
752078 |
obtaining a copy of this software and associated documentation files
|
|
Packit Service |
752078 |
(the “Software”), to deal in the Software without
|
|
Packit Service |
752078 |
restriction, including without limitation the rights to use, copy,
|
|
Packit Service |
752078 |
modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
Packit Service |
752078 |
the Software, and to permit persons to whom the Software is furnished
|
|
Packit Service |
752078 |
to do so, subject to the following conditions:
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
The above copyright notice and this permission notice shall be
|
|
Packit Service |
752078 |
included in all copies or substantial portions of the Software.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY
|
|
Packit Service |
752078 |
OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
|
|
Packit Service |
752078 |
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
Packit Service |
752078 |
NONINFRINGEMENT. IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY
|
|
Packit Service |
752078 |
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
Packit Service |
752078 |
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
Packit Service |
752078 |
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
Except as contained in this notice, the name of the X Consortium
|
|
Packit Service |
752078 |
shall not be used in advertising or otherwise to promote the sale, use
|
|
Packit Service |
752078 |
or other dealings in this Software without prior written authorization
|
|
Packit Service |
752078 |
from the X Consortium.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
X Window System is a trademark of The Open Group.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
</legalnotice>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<abstract>
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
This document specifies a protocol that facilitates the management of
|
|
Packit Service |
752078 |
groups of client applications by a session manager. The session
|
|
Packit Service |
752078 |
manager can cause clients to save their state, to shut down, and to be
|
|
Packit Service |
752078 |
restarted into a previously saved state. This protocol is layered on
|
|
Packit Service |
752078 |
top of the X.Org ICE protocol.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
</abstract>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</bookinfo>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<chapter id='Acknowledgments'>
|
|
Packit Service |
752078 |
<title>Acknowledgments</title>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
First I would like to thank the entire ICCCM and Intrinsics
|
|
Packit Service |
752078 |
working groups for the comments and suggestions. I would like to make special
|
|
Packit Service |
752078 |
thanks to the following people (in alphabetical order), Jordan Brown,
|
|
Packit Service |
752078 |
Ellis Cohen, Donna Converse, Vania Joloboff, Stuart Marks, Ralph Mor
|
|
Packit Service |
752078 |
and Bob Scheifler.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
</chapter>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<chapter id='Definitions_and_Goals'>
|
|
Packit Service |
752078 |
<title>Definitions and Goals</title>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
The purpose of the X Session Management Protocol (XSMP) is
|
|
Packit Service |
752078 |
to provide a uniform mechanism for users to save and restore their sessions.
|
|
Packit Service |
752078 |
A <firstterm>session</firstterm> is a group of clients, each
|
|
Packit Service |
752078 |
of which has a particular state. The session is controlled by a
|
|
Packit Service |
752078 |
network service called the <firstterm>session manager</firstterm>.
|
|
Packit Service |
752078 |
The session manager issues commands to its
|
|
Packit Service |
752078 |
clients on behalf of the user. These commands may cause clients to
|
|
Packit Service |
752078 |
save their state or to terminate. It is expected that the client will
|
|
Packit Service |
752078 |
save its state in such a way that the client can be restarted at a
|
|
Packit Service |
752078 |
later time and resume its operation as if it had never been
|
|
Packit Service |
752078 |
terminated. A client's state might include information about the file
|
|
Packit Service |
752078 |
currently being edited, the current position of the insertion point
|
|
Packit Service |
752078 |
within the file, or the start of an uncommitted transaction. The
|
|
Packit Service |
752078 |
means by which clients are restarted is unspecified by this
|
|
Packit Service |
752078 |
protocol.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
For purposes of this protocol, a <firstterm>client</firstterm>
|
|
Packit Service |
752078 |
of the session manager is defined as a connection to the session
|
|
Packit Service |
752078 |
manager. A client is typically, though not necessarily, a process
|
|
Packit Service |
752078 |
running an application program connected to an X Window System
|
|
Packit Service |
752078 |
display. However, a client may be connected to more than one X
|
|
Packit Service |
752078 |
display or not be connected to any X displays at all.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
This protocol is layered on top of the X Consortium's ICE protocol and
|
|
Packit Service |
752078 |
relies on the ICE protocol to handle connection management and authentication.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</chapter>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<chapter id='Overview_of_the_Protocol'>
|
|
Packit Service |
752078 |
<title>Overview of the Protocol</title>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
Clients use XSMP to register themselves with the session manager (SM).
|
|
Packit Service |
752078 |
When a client starts up, it should connect to the SM. The client
|
|
Packit Service |
752078 |
should remain connected for as long as it runs. A client may resign
|
|
Packit Service |
752078 |
from the session by issuing the proper protocol messages before
|
|
Packit Service |
752078 |
disconnecting. Termination of the connection without notice will be
|
|
Packit Service |
752078 |
taken as an indication that the client died unexpectedly.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
Clients are expected to save their state in such a way as to allow
|
|
Packit Service |
752078 |
multiple instantiations of themselves to be managed independently. A
|
|
Packit Service |
752078 |
unique value called a <firstterm>client-ID</firstterm> is
|
|
Packit Service |
752078 |
provided by the protocol for the purpose of disambiguating multiple
|
|
Packit Service |
752078 |
instantiations of clients. Clients may use this ID, for example, as
|
|
Packit Service |
752078 |
part of a filename in which to store the state for a particular
|
|
Packit Service |
752078 |
instantiation. The client-ID should be saved as part of the command
|
|
Packit Service |
752078 |
used to restart this client
|
|
Packit Service |
752078 |
(the <property>RestartCommand</property>) so that the client
|
|
Packit Service |
752078 |
will retain the same ID after it is restarted. Certain small pieces
|
|
Packit Service |
752078 |
of state might also be stored in the RestartCommand. For example, an
|
|
Packit Service |
752078 |
X11 client might place a '-twoWindow' option in its RestartCommand to
|
|
Packit Service |
752078 |
indicate that it should start up in two window mode when it is
|
|
Packit Service |
752078 |
restarted.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
The client finds the network address of the SM in a system-dependent
|
|
Packit Service |
752078 |
way. On POSIX systems an environment
|
|
Packit Service |
752078 |
variable called <envar>SESSION_MANAGER</envar>
|
|
Packit Service |
752078 |
will contain a list of network IDs. Each id will contain the
|
|
Packit Service |
752078 |
transport name followed by a slash and the (transport-specific)
|
|
Packit Service |
752078 |
address. A TCP/IP address would look like this:
|
|
Packit Service |
752078 |
<informalexample><para>
|
|
Packit Service |
752078 |
<literal>tcp/</literal><replaceable>hostname</replaceable><literal>:</literal><replaceable>portnumber</replaceable>
|
|
Packit Service |
752078 |
</para></informalexample>
|
|
Packit Service |
752078 |
where the hostname is a fully qualified domain name.
|
|
Packit Service |
752078 |
A Unix Domain address looks like this:
|
|
Packit Service |
752078 |
<informalexample><para>
|
|
Packit Service |
752078 |
<literal>local/</literal><replaceable>hostname</replaceable><literal>:</literal><replaceable>path</replaceable>
|
|
Packit Service |
752078 |
</para></informalexample>
|
|
Packit Service |
752078 |
A DECnet address would look like this:
|
|
Packit Service |
752078 |
<informalexample><para>
|
|
Packit Service |
752078 |
<literal>decnet/</literal><replaceable>nodename</replaceable><literal>::</literal><replaceable>objname</replaceable>
|
|
Packit Service |
752078 |
</para></informalexample>
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
If multiple network IDs are specified, they should be separated by commas.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<note><title>Rationale</title>
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
There was much discussion over whether the XSMP protocol should use X
|
|
Packit Service |
752078 |
as the transport protocol or whether it should use its own independent
|
|
Packit Service |
752078 |
transport. It was decided that it would use an independent protocol
|
|
Packit Service |
752078 |
for several reasons. First, the Session Manager should be able to
|
|
Packit Service |
752078 |
manage programs that do not maintain an X connection. Second, the X
|
|
Packit Service |
752078 |
protocol is not appropriate to use as a general-purpose transport
|
|
Packit Service |
752078 |
protocol. Third, a session might span multiple displays.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
The protocol is connection based, because there is no other way for
|
|
Packit Service |
752078 |
the SM to determine reliably when clients terminate.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
It should be noted that this protocol introduces another single point
|
|
Packit Service |
752078 |
of failure into the system. Although it is possible for clients to
|
|
Packit Service |
752078 |
continue running after the SM has exited, this will probably not be
|
|
Packit Service |
752078 |
the case in normal practice. Normally the program that starts the SM
|
|
Packit Service |
752078 |
will consider the session to be terminated when the SM exits (either
|
|
Packit Service |
752078 |
normally or abnormally).
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
To get around this would require some sort of rendezvous server that
|
|
Packit Service |
752078 |
would also introduce a single point of failure. In the absence of a
|
|
Packit Service |
752078 |
generally available rendezvous server, XSMP is kept simple in the
|
|
Packit Service |
752078 |
hopes of making simple reliable SMs.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
</note>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
Some clients may wish to manage the programs they start. For example,
|
|
Packit Service |
752078 |
a mail program could start a text editor for editing the text of a
|
|
Packit Service |
752078 |
mail message. A client that does this is a session manager itself; it
|
|
Packit Service |
752078 |
should supply the clients it starts with the appropriate connection
|
|
Packit Service |
752078 |
information (i.e., the <envar>SESSION_MANAGER</envar> environment variable)
|
|
Packit Service |
752078 |
that specifies a connection to itself instead of to the top level session
|
|
Packit Service |
752078 |
manager.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
Each client has associated with it a list of properties. A property
|
|
Packit Service |
752078 |
set by one client is not visible to any other client. These
|
|
Packit Service |
752078 |
properties are used for the client to inform the SM of the client's
|
|
Packit Service |
752078 |
current state. When a client initially connects to the SM, there are
|
|
Packit Service |
752078 |
no properties set.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
</chapter>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<chapter id='Data_Types'>
|
|
Packit Service |
752078 |
<title>Data Types</title>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
XSMP messages contain several types of data. Both the SM and the
|
|
Packit Service |
752078 |
client always send messages in their native byte order. Thus, both
|
|
Packit Service |
752078 |
sides may need to byte-swap the messages received. The need to do
|
|
Packit Service |
752078 |
byte-swapping is determined at run-time by the ICE protocol.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
If an invalid value is specified for a field of any of the enumerated
|
|
Packit Service |
752078 |
types, a <errorname>BadValue</errorname> error message must be sent by
|
|
Packit Service |
752078 |
the receiver of the message to the sender of the message.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<informaltable frame='topbot'>
|
|
Packit Service |
752078 |
<tgroup cols='2' align='left' colsep='0' rowsep='0'>
|
|
Packit Service |
752078 |
<colspec colname='c1' colwidth='1.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c2' colwidth='3.0*'/>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row rowsep='1'>
|
|
Packit Service |
752078 |
<entry>Type Name</entry>
|
|
Packit Service |
752078 |
<entry>Description</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>BOOL</entry>
|
|
Packit Service |
752078 |
<entry><para><constant>False</constant> or <constant>True</constant></para></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>INTERACT_STYLE</entry>
|
|
Packit Service |
752078 |
<entry><function>None</function> <function>Errors</function> or <function>Any</function></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>DIALOG_TYPE</entry>
|
|
Packit Service |
752078 |
<entry><function>Error</function> or <function>Normal</function></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>SAVE_TYPE</entry>
|
|
Packit Service |
752078 |
<entry><function>Global</function> <function>Local</function> or <function>Both</function></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>CARD8</entry>
|
|
Packit Service |
752078 |
<entry>a one-byte unsigned integer</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>CARD16</entry>
|
|
Packit Service |
752078 |
<entry>a two-byte unsigned integer</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>CARD32</entry>
|
|
Packit Service |
752078 |
<entry>a four-byte unsigned integer</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>ARRAY8</entry>
|
|
Packit Service |
752078 |
<entry>a sequence of CARD8s</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>LISTofARRAY8</entry>
|
|
Packit Service |
752078 |
<entry>a sequence of ARRAY8s</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>PROPERTY</entry>
|
|
Packit Service |
752078 |
<entry>a property name (an ARRAY8), a type name, and a value of that type</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>LISTofPROPERTY</entry>
|
|
Packit Service |
752078 |
<entry>a counted collection of PROPERTYs.</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</tgroup>
|
|
Packit Service |
752078 |
</informaltable>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</chapter>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<chapter id='Protocol_Setup_and_Message_Format'>
|
|
Packit Service |
752078 |
<title>Protocol Setup and Message Format</title>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
To start the XSMP protocol, the client sends the server an
|
|
Packit Service |
752078 |
ICE <function>ProtocolSetup</function> message. All XSMP messages are
|
|
Packit Service |
752078 |
in the standard ICE message format. The message's major opcode is
|
|
Packit Service |
752078 |
assigned to XSMP by ICE at run-time. The different parties (client
|
|
Packit Service |
752078 |
and SM) may be assigned different major opcodes for XSMP. Once
|
|
Packit Service |
752078 |
assigned, all XSMP messages issued by this party will use the same
|
|
Packit Service |
752078 |
major opcode. The message's minor opcode specifies which protocol
|
|
Packit Service |
752078 |
message this message contains.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
</chapter>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<chapter id='Client_Identification_String'>
|
|
Packit Service |
752078 |
<title>Client Identification String</title>
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
A client ID is a string of XPCS characters encoded in ISO Latin 1 (ISO
|
|
Packit Service |
752078 |
8859-1). No null characters are allowed in this string. The client
|
|
Packit Service |
752078 |
ID string is used in the <function>RegisterClient</function>
|
|
Packit Service |
752078 |
and <function>RegisterClientReply</function> messages.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
Client IDs consist of the pieces described below. The ID is formed by
|
|
Packit Service |
752078 |
concatenating the pieces in sequence, without separator characters.
|
|
Packit Service |
752078 |
All pieces are padded on the left with '<literal>0</literal>'
|
|
Packit Service |
752078 |
characters so as to fill the specified length. Decimal numbers are
|
|
Packit Service |
752078 |
encoded using the characters '<literal>0</literal>' through
|
|
Packit Service |
752078 |
'<literal>9</literal>', and hexadecimal numbers using the characters
|
|
Packit Service |
752078 |
'<literal>0</literal>' through '<literal>9</literal>' and
|
|
Packit Service |
752078 |
'<literal>A</literal>' through '<literal>F</literal>'.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<itemizedlist mark='bullet'>
|
|
Packit Service |
752078 |
<listitem><para>
|
|
Packit Service |
752078 |
Version. This is currently the character '<literal>1</literal>'.
|
|
Packit Service |
752078 |
</para></listitem>
|
|
Packit Service |
752078 |
<listitem>
|
|
Packit Service |
752078 |
<para>Address type and address. The address type will be one of
|
|
Packit Service |
752078 |
<literallayout remap='DS'>
|
|
Packit Service |
752078 |
'<literal>1</literal>' a 4-byte IPv4 address encoded as 8 hexadecimal digits
|
|
Packit Service |
752078 |
'<literal>2</literal>' a 6-byte DECNET address encoded as 12 hexadecimal digits
|
|
Packit Service |
752078 |
'<literal>6</literal>' a 16-byte IPv6 address encoded as 32 hexadecimal digits
|
|
Packit Service |
752078 |
</literallayout>
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
The address is the one of the network addresses of the machine where
|
|
Packit Service |
752078 |
the session manager (not the client) is running. For example, the IP
|
|
Packit Service |
752078 |
address 198.112.45.11 would be encoded as the string
|
|
Packit Service |
752078 |
"<literal>QC6702D0B</literal>".
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
</listitem>
|
|
Packit Service |
752078 |
<listitem><para>
|
|
Packit Service |
752078 |
Time stamp. A 13-digit decimal number specifying
|
|
Packit Service |
752078 |
the number of milliseconds since 00:00:00 UTC, January 1, 1970.
|
|
Packit Service |
752078 |
</para></listitem>
|
|
Packit Service |
752078 |
<listitem>
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
Process-ID type and process-ID. The process-ID type will be one of
|
|
Packit Service |
752078 |
<literallayout remap='DS'>
|
|
Packit Service |
752078 |
'<literal>1</literal>' a POSIX process-ID encoded as a 10-digit decimal number.
|
|
Packit Service |
752078 |
</literallayout>
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
The process-ID is the process-ID of the session manager, not of a client.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
</listitem>
|
|
Packit Service |
752078 |
<listitem>
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
Sequence number. This is a four-digit decimal number. It is
|
|
Packit Service |
752078 |
incremented every time the session manager creates an ID. After
|
|
Packit Service |
752078 |
reaching "Q9999" it wraps to "Q0000".
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
<note><title>Rationale</title>
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
Once a client ID has been assigned to the client, the client keeps
|
|
Packit Service |
752078 |
this ID indefinitely. If the client is terminated and restarted, it
|
|
Packit Service |
752078 |
will be reassigned the same ID. It is desirable to be able to pass
|
|
Packit Service |
752078 |
client IDs around from machine to machine, from user to user, and from
|
|
Packit Service |
752078 |
session manager to session manager, while retaining the identity of
|
|
Packit Service |
752078 |
the client. This, combined with the indefinite persistence of client
|
|
Packit Service |
752078 |
IDs, means that client IDs need to be globally unique. The
|
|
Packit Service |
752078 |
construction specified above will ensure that any client ID created by
|
|
Packit Service |
752078 |
any user, session manager, and machine will be different from any other.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
</note>
|
|
Packit Service |
752078 |
</listitem>
|
|
Packit Service |
752078 |
</itemizedlist>
|
|
Packit Service |
752078 |
</chapter>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<chapter id='Protocol'>
|
|
Packit Service |
752078 |
<title>Protocol</title>
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
The protocol consists of a sequence of messages as described below.
|
|
Packit Service |
752078 |
Each message type is specified by an ICE minor opcode. A given
|
|
Packit Service |
752078 |
message type is sent either from a client to the session manager or
|
|
Packit Service |
752078 |
from the session manager to a client; the appropriate direction is
|
|
Packit Service |
752078 |
listed with each message's description. For each message type, the
|
|
Packit Service |
752078 |
set of valid responses and possible error messages are listed. The
|
|
Packit Service |
752078 |
ICE severity is given in parentheses following each error class.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<synopsis>
|
|
Packit Service |
752078 |
<function>RegisterClient</function> [Client → SM]
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<parameter>previous-ID</parameter>: ARRAY8
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
Valid Responses: <function>RegisterClientReply</function>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
Possible Errors: <errorname>BadValue</errorname> (<symbol role='Pn'>CanContinue</symbol>)
|
|
Packit Service |
752078 |
</synopsis>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
The client must send this message to the SM to register the client's
|
|
Packit Service |
752078 |
existence. If a client is being restarted from a previous session,
|
|
Packit Service |
752078 |
the <parameter>previous-ID</parameter> field must contain the client
|
|
Packit Service |
752078 |
ID from the previous session. For new clients,
|
|
Packit Service |
752078 |
<parameter>previous-ID</parameter> should be of zero length.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
If <parameter>previous-ID</parameter> is not valid,
|
|
Packit Service |
752078 |
the SM will send a <errorname>BadValue</errorname>
|
|
Packit Service |
752078 |
error message to the client. At this point the SM reverts to the
|
|
Packit Service |
752078 |
register state and waits for another <function>RegisterClient</function>
|
|
Packit Service |
752078 |
The client should then send a <function>RegisterClient</function> with a
|
|
Packit Service |
752078 |
null <parameter>previous-ID</parameter> field.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<synopsis>
|
|
Packit Service |
752078 |
<function>RegisterClientReply</function> [Client ← SM]
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<parameter>client-ID</parameter>: <type>ARRAY8</type>
|
|
Packit Service |
752078 |
</synopsis>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
The <parameter>client-ID</parameter> specifies a unique identification
|
|
Packit Service |
752078 |
for this client. If the client had specified an ID in the
|
|
Packit Service |
752078 |
<parameter>previous-ID</parameter> field of the
|
|
Packit Service |
752078 |
<function>RegisterClient</function> message,
|
|
Packit Service |
752078 |
<parameter>client-ID</parameter> will be identical to the previously
|
|
Packit Service |
752078 |
specified ID. If <parameter>previous-ID</parameter> was null,
|
|
Packit Service |
752078 |
<parameter>client-ID</parameter> will be a unique ID freshly generated
|
|
Packit Service |
752078 |
by the SM. The <parameter>client-ID</parameter> format is specified in
|
|
Packit Service |
752078 |
<link linkend='Client_Identification_String'>section 6</link>.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
If the client didn't supply a <parameter>previous-ID</parameter> field to
|
|
Packit Service |
752078 |
the <function>RegisterClient</function> message, the SM must send
|
|
Packit Service |
752078 |
a <function>SaveYourself</function> message with type = Local,
|
|
Packit Service |
752078 |
shutdown = False, interact-style = None, and fast = False immediately
|
|
Packit Service |
752078 |
after the <function>RegisterClientReply</function> The client should
|
|
Packit Service |
752078 |
respond to this like any other <function>SaveYourself</function>
|
|
Packit Service |
752078 |
message.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<synopsis>
|
|
Packit Service |
752078 |
<function>SaveYourself</function> [Client ← SM]
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<parameter>type</parameter>: <type>SAVE_TYPE</type>
|
|
Packit Service |
752078 |
<parameter>shutdown</parameter>: <type>BOOL</type>
|
|
Packit Service |
752078 |
<parameter>interact-style</parameter>: <type>INTERACT_STYLE</type>
|
|
Packit Service |
752078 |
<parameter>fast</parameter>: <type>BOOL</type>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
Valid Responses:
|
|
Packit Service |
752078 |
<function>SetProperties</function>
|
|
Packit Service |
752078 |
<function>DeleteProperties</function>
|
|
Packit Service |
752078 |
<function>GetProperties</function>
|
|
Packit Service |
752078 |
<function>SaveYourselfDone</function>
|
|
Packit Service |
752078 |
<function>SaveYourselfPhase2Request</function>
|
|
Packit Service |
752078 |
<function>InteractRequest</function>
|
|
Packit Service |
752078 |
</synopsis>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
The SM sends this message to a client to ask it to save its state.
|
|
Packit Service |
752078 |
The client writes a state file, if necessary, and, if necessary,
|
|
Packit Service |
752078 |
uses <function>SetProperties</function> to inform the SM of how to
|
|
Packit Service |
752078 |
restart it and how to discard the saved state. During this process it
|
|
Packit Service |
752078 |
can, if allowed by <parameter>interact-style</parameter>, request permission
|
|
Packit Service |
752078 |
to interact with
|
|
Packit Service |
752078 |
the user by sending an <function>InteractRequest</function> message.
|
|
Packit Service |
752078 |
After the state has been saved, or if it cannot be successfully saved,
|
|
Packit Service |
752078 |
and the properties are appropriately set, the client sends
|
|
Packit Service |
752078 |
a <function>SaveYourselfDone</function> message. If the client wants
|
|
Packit Service |
752078 |
to save additional information after all the other clients have
|
|
Packit Service |
752078 |
finished changing their own state, the client should
|
|
Packit Service |
752078 |
send <function>SaveYourselfPhase2Request</function> instead
|
|
Packit Service |
752078 |
of <function>SaveYourselfDone</function> The client must then freeze
|
|
Packit Service |
752078 |
interaction with the user and wait until it receives
|
|
Packit Service |
752078 |
a <function>SaveComplete</function> <function>Die</function> or
|
|
Packit Service |
752078 |
a <function>ShutdownCancelled</function> message.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
If <parameter>interact-style</parameter> is <function>None</function> the
|
|
Packit Service |
752078 |
client must not interact with the user while saving state. If the
|
|
Packit Service |
752078 |
<parameter>interact-style</parameter>
|
|
Packit Service |
752078 |
is <function>Errors</function> the client may interact with the user
|
|
Packit Service |
752078 |
only if an error condition arises. If <parameter>interact-style</parameter>
|
|
Packit Service |
752078 |
is <function>Any</function> then the client may interact with the user
|
|
Packit Service |
752078 |
for any purpose. This is done by sending
|
|
Packit Service |
752078 |
an <function>InteractRequest</function> message. The SM will
|
|
Packit Service |
752078 |
send an <function>Interact</function> message to each client that sent
|
|
Packit Service |
752078 |
an <function>InteractRequest</function> The client must postpone
|
|
Packit Service |
752078 |
all interaction until it gets the <function>Interact</function>
|
|
Packit Service |
752078 |
message. When the client is done interacting it should send the SM
|
|
Packit Service |
752078 |
an <function>InteractDone</function> message.
|
|
Packit Service |
752078 |
The <function>InteractRequest</function> message can be sent any
|
|
Packit Service |
752078 |
time after a <function>SaveYourself</function> and before
|
|
Packit Service |
752078 |
a <function>SaveYourselfDone</function>
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
Unusual circumstances may dictate multiple interactions. The client
|
|
Packit Service |
752078 |
may initiate as many <function>InteractRequest</function>
|
|
Packit Service |
752078 |
- <function>Interact</function> - <function>InteractDone</function>
|
|
Packit Service |
752078 |
sequences as it needs before it sends <function>SaveYourselfDone</function>
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
When a client receives <function>SaveYourself</function> and has
|
|
Packit Service |
752078 |
not yet responded <function>SaveYourselfDone</function> to a
|
|
Packit Service |
752078 |
previous <function>SaveYourself</function> it must send
|
|
Packit Service |
752078 |
a <function>SaveYourselfDone</function> and may then begin
|
|
Packit Service |
752078 |
responding as appropriate to the newly received
|
|
Packit Service |
752078 |
<function>SaveYourself</function>
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
The <parameter>type</parameter> field specifies the type of information that
|
|
Packit Service |
752078 |
should be saved: <function>Global</function> <function>Local</function>
|
|
Packit Service |
752078 |
or <function>Both</function> The <function>Local</function> type
|
|
Packit Service |
752078 |
indicates that the application must update the properties to reflect
|
|
Packit Service |
752078 |
its current state, send
|
|
Packit Service |
752078 |
a <function>SaveYourselfDone</function> and continue.
|
|
Packit Service |
752078 |
Specifically it should save enough information to restore the state as
|
|
Packit Service |
752078 |
seen by the user of this client. It should not affect the state as
|
|
Packit Service |
752078 |
seen by other users. The <function>Global</function> type indicates
|
|
Packit Service |
752078 |
that the user wants the client to commit all of its data to permanent,
|
|
Packit Service |
752078 |
globally-accessible storage. <function>Both</function> indicates that
|
|
Packit Service |
752078 |
the client should do both of these. If <function>Both</function> is
|
|
Packit Service |
752078 |
specified, the client should first commit the data to permanent
|
|
Packit Service |
752078 |
storage before updating its SM properties.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<note><title>Examples</title>
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
If a word processor was sent a <function>SaveYourself</function> with
|
|
Packit Service |
752078 |
a type of <function>Local</function> it could create a temporary file
|
|
Packit Service |
752078 |
that included the current contents of the file, the location of the
|
|
Packit Service |
752078 |
cursor, and other aspects of the current editing session. It would
|
|
Packit Service |
752078 |
then update its <function>RestartCommand</function> property with
|
|
Packit Service |
752078 |
enough information to find the temporary file, and
|
|
Packit Service |
752078 |
its <function>DiscardCommand</function> with enough information
|
|
Packit Service |
752078 |
to remove it.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
If a word processor was sent a <function>SaveYourself</function> with
|
|
Packit Service |
752078 |
a type of <function>Global</function> it would simply save the
|
|
Packit Service |
752078 |
currently edited file.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
If a word processor was sent a <function>SaveYourself</function> with
|
|
Packit Service |
752078 |
a type of <function>Both</function> it would first save the currently
|
|
Packit Service |
752078 |
edited file. It would then create a temporary file with information
|
|
Packit Service |
752078 |
such as the current position of the cursor and what file is being
|
|
Packit Service |
752078 |
edited. It would then update
|
|
Packit Service |
752078 |
its <function>RestartCommand</function> property with enough
|
|
Packit Service |
752078 |
information to find the temporary file, and
|
|
Packit Service |
752078 |
its <function>DiscardCommand</function> with enough information
|
|
Packit Service |
752078 |
to remove it.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
Once the SM has send <function>SaveYourself</function> to a client, it
|
|
Packit Service |
752078 |
can't send another <function>SaveYourself</function> to that client until
|
|
Packit Service |
752078 |
the client either responds with a <function>SaveYourselfDone</function> or
|
|
Packit Service |
752078 |
the SM sends a <function>ShutdownCancelled</function>
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
</note>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<note><title>Advice to Implementors</title>
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
If the client stores local any state in a file or similar "external"
|
|
Packit Service |
752078 |
storage, it must create a distinct copy in response to
|
|
Packit Service |
752078 |
each <function>SaveYourself</function> message.
|
|
Packit Service |
752078 |
It <emphasis remap='I'>must not</emphasis> simply refer to a previous
|
|
Packit Service |
752078 |
copy, because the SM may discard that previous saved state using
|
|
Packit Service |
752078 |
a <function>DiscardCommand</function> without knowing that it is
|
|
Packit Service |
752078 |
needed for the new checkpoint.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
</note>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
The <parameter>shutdown</parameter> field specifies whether the system is
|
|
Packit Service |
752078 |
being shut down.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<note><title>Rationale</title>
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
The interaction may be different depending on whether or not shutdown is set.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
</note>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
The client must save and then must prevent interaction until it
|
|
Packit Service |
752078 |
receives a <function>SaveComplete</function> <function>Die</function>
|
|
Packit Service |
752078 |
or a <function>ShutdownCancelled</function> because anything the
|
|
Packit Service |
752078 |
user does after the save will be lost.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
The <parameter>fast</parameter> field specifies whether or not the client
|
|
Packit Service |
752078 |
should save its state as quickly as possible. For example, if the SM knows
|
|
Packit Service |
752078 |
that power is about to fail, it should set the <parameter>fast</parameter>
|
|
Packit Service |
752078 |
field to <constant>True</constant>.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<synopsis>
|
|
Packit Service |
752078 |
<function>SaveYourselfPhase2</function> [Client → SM]
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
Valid Responses:
|
|
Packit Service |
752078 |
<function>SetProperties</function>
|
|
Packit Service |
752078 |
<function>DeleteProperties</function>
|
|
Packit Service |
752078 |
<function>GetProperties</function>
|
|
Packit Service |
752078 |
<function>SaveYourselfDone</function>
|
|
Packit Service |
752078 |
<function>InteractRequest</function>
|
|
Packit Service |
752078 |
</synopsis>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
The SM sends this message to a client that has previously sent
|
|
Packit Service |
752078 |
a <function>SaveYourselfPhase2Request</function> message. This
|
|
Packit Service |
752078 |
message informs the client that all other clients are in a fixed state
|
|
Packit Service |
752078 |
and this client can save state that is associated with other clients.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<note><title>Rationale</title>
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
Clients that manager other clients (window managers, workspace
|
|
Packit Service |
752078 |
managers, etc) need to know when all clients they are managing are
|
|
Packit Service |
752078 |
idle, so that the manager can save state related to each of the
|
|
Packit Service |
752078 |
clients without being concerned with that state changing.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
</note>
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
The client writes a state file, if necessary, and, if necessary,
|
|
Packit Service |
752078 |
uses <function>SetProperties</function> to inform the SM of how to
|
|
Packit Service |
752078 |
restart it and how to discard the saved state. During this process it
|
|
Packit Service |
752078 |
can request permission to interact with the user by sending
|
|
Packit Service |
752078 |
an <function>InteractRequest</function> message. This should only be
|
|
Packit Service |
752078 |
done if an error occurs that requires user interaction to resolve.
|
|
Packit Service |
752078 |
After the state has been saved, or if it cannot be successfully saved,
|
|
Packit Service |
752078 |
and the properties are appropriately set, the client sends
|
|
Packit Service |
752078 |
a <function>SaveYourselfDone</function> message.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<synopsis>
|
|
Packit Service |
752078 |
<function>SaveYourselfRequest</function> [Client → SM]
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<parameter>type</parameter>: <type>SAVE_TYPE</type>
|
|
Packit Service |
752078 |
<parameter>shutdown</parameter>: <type>BOOL</type>
|
|
Packit Service |
752078 |
<parameter>interact-style</parameter>: <type>INTERACT_STYLE</type>
|
|
Packit Service |
752078 |
<parameter>fast</parameter>: <type>BOOL</type>
|
|
Packit Service |
752078 |
<parameter>global</parameter>: <type>BOOL</type>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
Valid Responses: <function>SaveYourself</function>
|
|
Packit Service |
752078 |
</synopsis>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
An application sends this to the SM to request a checkpoint. When the
|
|
Packit Service |
752078 |
SM receives this request it may generate a <function>SaveYourself</function>
|
|
Packit Service |
752078 |
message in response and it may leave the fields intact.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<note><title>Example</title> <para>
|
|
Packit Service |
752078 |
A vendor of a UPS (Uninterruptible Power Supply)
|
|
Packit Service |
752078 |
might include an SM client that would monitor the status of
|
|
Packit Service |
752078 |
the UPS and generate a fast shutdown if the power
|
|
Packit Service |
752078 |
is about to be lost.
|
|
Packit Service |
752078 |
</para></note>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
If <parameter>global</parameter> is set to <constant>True</constant> then the
|
|
Packit Service |
752078 |
resulting <function>SaveYourself</function> should be sent to all
|
|
Packit Service |
752078 |
applications. If <parameter>global</parameter> is set to
|
|
Packit Service |
752078 |
<constant>False</constant> then the
|
|
Packit Service |
752078 |
resulting <function>SaveYourself</function> should be sent to the
|
|
Packit Service |
752078 |
application that sent the <function>SaveYourselfRequest</function>
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<synopsis>
|
|
Packit Service |
752078 |
<function>InteractRequest</function> [Client → SM]
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<parameter>dialog-type</parameter>: <type>DIALOG_TYPE</type>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
Valid Responses: <function>Interact</function> <function>ShutdownCancelled</function>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
Possible Errors: <errorname>BadState</errorname> (<symbol role='Pn'>CanContinue</symbol>)
|
|
Packit Service |
752078 |
</synopsis>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
During a checkpoint or session-save operation, only one client at a
|
|
Packit Service |
752078 |
time might be granted the privilege of interacting with the user.
|
|
Packit Service |
752078 |
The <function>InteractRequest</function> message causes the SM to emit
|
|
Packit Service |
752078 |
an <function>Interact</function> message at some later time if the
|
|
Packit Service |
752078 |
shutdown is not cancelled by another client first.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
The <parameter>dialog-type</parameter> field specifies either
|
|
Packit Service |
752078 |
<function>Errors</function> indicating that the client wants to start an
|
|
Packit Service |
752078 |
error dialog or <function>Normal</function> meaning the client wishes
|
|
Packit Service |
752078 |
to start a non-error dialog.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<synopsis>
|
|
Packit Service |
752078 |
<function>Interact</function> [Client ← SM]
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
Valid Responses: <function>InteractDone</function>
|
|
Packit Service |
752078 |
</synopsis>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
This message grants the client the privilege of interacting with the
|
|
Packit Service |
752078 |
user. When the client is done interacting with the user it must send
|
|
Packit Service |
752078 |
an <function>InteractDone</function> message to the SM unless a
|
|
Packit Service |
752078 |
shutdown cancel is received.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
<note><title>Advice to Implementors</title>
|
|
Packit Service |
752078 |
<para>If a client receives a ShutdownCancelled
|
|
Packit Service |
752078 |
after receiving an <function>Interact</function> message, but before
|
|
Packit Service |
752078 |
sending a <function>InteractDone</function> the client should abort
|
|
Packit Service |
752078 |
the interaction and send a <function>SaveYourselfDone</function>
|
|
Packit Service |
752078 |
</para></note>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<synopsis>
|
|
Packit Service |
752078 |
<function>InteractDone</function> [Client → SM]
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<parameter>cancel-shutdown</parameter>: <type>BOOL</type>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
Valid Responses: <function>ShutdownCancelled</function>
|
|
Packit Service |
752078 |
</synopsis>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
This message is used by a client to notify the SM that it is done interacting.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
Setting the <parameter>cancel-shutdown</parameter> field to <constant>True</constant>
|
|
Packit Service |
752078 |
indicates that the user has requested that the entire shutdown be
|
|
Packit Service |
752078 |
cancelled. <parameter>Cancel-shutdown</parameter> may only be <constant>True</constant> if
|
|
Packit Service |
752078 |
the corresponding <function>SaveYourself</function> message
|
|
Packit Service |
752078 |
specified <constant>True</constant> for the shutdown field
|
|
Packit Service |
752078 |
and <function>Any</function> or <function>Errors</function> for the
|
|
Packit Service |
752078 |
<parameter>interact-style</parameter> field. Otherwise,
|
|
Packit Service |
752078 |
<parameter>cancel-shutdown</parameter> must be <constant>False</constant>.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<synopsis>
|
|
Packit Service |
752078 |
<function>SaveYourselfDone</function> [Client → SM]
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<parameter>success</parameter>: <type>BOOL</type>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
Valid Responses:
|
|
Packit Service |
752078 |
<function>SaveComplete</function>
|
|
Packit Service |
752078 |
<function>Die</function>
|
|
Packit Service |
752078 |
<function>ShutdownCancelled</function>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</synopsis>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
This message is sent by a client to indicate that all of the
|
|
Packit Service |
752078 |
properties representing its state have been updated. After
|
|
Packit Service |
752078 |
sending <function>SaveYourselfDone</function> the client must wait for
|
|
Packit Service |
752078 |
a <function>SaveComplete</function> <function>ShutdownCancelled</function>
|
|
Packit Service |
752078 |
or <function>Die</function> message before changing its state. If
|
|
Packit Service |
752078 |
the <function>SaveYourself</function> operation was successful, then
|
|
Packit Service |
752078 |
the client should set the <parameter>success</parameter> field to
|
|
Packit Service |
752078 |
<constant>True</constant> otherwise the client should set it to
|
|
Packit Service |
752078 |
<constant>False</constant>.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<note><title>Example</title>
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
If a client tries to save its state and runs out of disk space, it
|
|
Packit Service |
752078 |
should return <constant>False</constant> in the <parameter>success</parameter>
|
|
Packit Service |
752078 |
field of the <function>SaveYourselfDone</function> message.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
</note>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<synopsis>
|
|
Packit Service |
752078 |
<function>SaveYourselfPhase2Request</function> [Client → SM]
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
Valid Responses:
|
|
Packit Service |
752078 |
<function>ShutdownCancelled</function>
|
|
Packit Service |
752078 |
<function>SaveYourselfPhase2</function>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</synopsis>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
This message is sent by a client to indicate that it needs to be informed
|
|
Packit Service |
752078 |
when all the other clients are quiescent, so it can continue its state.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<synopsis>
|
|
Packit Service |
752078 |
<function>Die</function> [Client ← SM]
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
Valid Responses: <function>ConnectionClosed</function>
|
|
Packit Service |
752078 |
</synopsis>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
When the SM wants a client to die it sends a <function>Die</function>
|
|
Packit Service |
752078 |
message. Before the client dies it responds by sending
|
|
Packit Service |
752078 |
a <function>ConnectionClosed</function> message and may then close its
|
|
Packit Service |
752078 |
connection to the SM at any time.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<synopsis>
|
|
Packit Service |
752078 |
<function>SaveComplete</function> [Client → SM]
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
Valid Responses:
|
|
Packit Service |
752078 |
</synopsis>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
When the SM is done with a checkpoint, it will send each of the
|
|
Packit Service |
752078 |
clients a <function>SaveComplete</function> message. The client is
|
|
Packit Service |
752078 |
then free to change its state.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<synopsis>
|
|
Packit Service |
752078 |
<function>ShutdownCancelled</function> [Client ← SM]
|
|
Packit Service |
752078 |
</synopsis>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
The shutdown currently in process has been aborted. The client can
|
|
Packit Service |
752078 |
now continue as if the shutdown had never happened. If the client has
|
|
Packit Service |
752078 |
not sent <function>SaveYourselfDone</function> yet, the client can
|
|
Packit Service |
752078 |
either abort the save and send <function>SaveYourselfDone</function>
|
|
Packit Service |
752078 |
with the success field set to <constant>False</constant> or it can
|
|
Packit Service |
752078 |
continue with the save and send a <function>SaveYourselfDone</function>
|
|
Packit Service |
752078 |
with the success field set to reflect the outcome of the save.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<synopsis>
|
|
Packit Service |
752078 |
<function>ConnectionClosed</function> [Client → SM]
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<parameter>reason</parameter>: <type>LISTofARRAY8</type>
|
|
Packit Service |
752078 |
</synopsis>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
Specifies that the client has decided to terminate. It should be
|
|
Packit Service |
752078 |
immediately followed by closing the connection.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
The <parameter>reason</parameter> field specifies why the client is resigning
|
|
Packit Service |
752078 |
from the session. It is encoded as an array of Compound Text strings. If the
|
|
Packit Service |
752078 |
resignation is expected by the user, there will typically be zero
|
|
Packit Service |
752078 |
ARRAY8s here. But if the client encountered an unexpected fatal
|
|
Packit Service |
752078 |
error, the error message (which might otherwise be printed on stderr
|
|
Packit Service |
752078 |
on a POSIX system) should be forwarded to the SM here, one ARRAY8 per
|
|
Packit Service |
752078 |
line of the message. It is the responsibility of the SM to display
|
|
Packit Service |
752078 |
this reason to the user.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
After sending this message, the client must not send any additional
|
|
Packit Service |
752078 |
XSMP messages to the SM.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
<note><title>Advice to Implementors</title><para>
|
|
Packit Service |
752078 |
If additional messages are received, they should be discarded.
|
|
Packit Service |
752078 |
</para></note>
|
|
Packit Service |
752078 |
<note><title>Rationale</title><para>
|
|
Packit Service |
752078 |
The reason for sending the <function>ConnectionClosed</function>
|
|
Packit Service |
752078 |
message before actually closing the connections is that some transport
|
|
Packit Service |
752078 |
protocols will not provide immediate notification of connection
|
|
Packit Service |
752078 |
closure.
|
|
Packit Service |
752078 |
</para></note>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<synopsis>
|
|
Packit Service |
752078 |
<function>SetProperties</function> [Client → SM]
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<parameter>properties</parameter>: <type>LISTofPROPERTY</type>
|
|
Packit Service |
752078 |
</synopsis>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
Sets the specified <parameter>properties</parameter> to the specified values.
|
|
Packit Service |
752078 |
Existing
|
|
Packit Service |
752078 |
properties not specified in the <function>SetProperties</function>
|
|
Packit Service |
752078 |
message are unaffected. Some properties have predefined semantics.
|
|
Packit Service |
752078 |
See <link linkend='Predefined_Properties'>section 11,
|
|
Packit Service |
752078 |
“Predefined Properties.”</link>
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
The protocol specification recommends that property names used for
|
|
Packit Service |
752078 |
properties not defined by the standard should begin with an
|
|
Packit Service |
752078 |
underscore. To prevent conflicts among organizations, additional
|
|
Packit Service |
752078 |
prefixes should be chosen (for example, _KPC_FAST_SAVE_OPTION). The
|
|
Packit Service |
752078 |
organizational prefixes should be registered with the X Registry. The
|
|
Packit Service |
752078 |
XSMP reserves all property names not beginning with an underscore for
|
|
Packit Service |
752078 |
future use.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<synopsis>
|
|
Packit Service |
752078 |
<function>DeleteProperties</function> [Client → SM]
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<parameter>property-names</parameter>: <type>LISTofARRAY8</type>
|
|
Packit Service |
752078 |
</synopsis>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>Removes the named properties.</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<synopsis>
|
|
Packit Service |
752078 |
<function>GetProperties</function> [Client → SM]
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
Valid Responses: <function>GetPropertiesReply</function>
|
|
Packit Service |
752078 |
</synopsis>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
Requests that the SM respond with the values of all the properties for
|
|
Packit Service |
752078 |
this client.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<synopsis>
|
|
Packit Service |
752078 |
<function>GetPropertiesReply</function> [Client ← SM]
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<parameter>values</parameter>: <type>LISTofPROPERTY</type>
|
|
Packit Service |
752078 |
</synopsis>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
This message is sent in reply to a <function>GetProperties</function>
|
|
Packit Service |
752078 |
message and includes the <parameter>values</parameter> of all the properties.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
</chapter>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<chapter id='Errors'>
|
|
Packit Service |
752078 |
<title>Errors</title>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
When the receiver of a message detects an error condition, the
|
|
Packit Service |
752078 |
receiver sends an ICE error message to the sender. There are only two
|
|
Packit Service |
752078 |
types of errors that are used by the XSMP:
|
|
Packit Service |
752078 |
<errorname>BadValue</errorname> and <errorname>BadState</errorname>
|
|
Packit Service |
752078 |
These are both defined in the ICE protocol.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
Any message received out-of-sequence will generate
|
|
Packit Service |
752078 |
a <errorname>BadState</errorname> error message.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
</chapter>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<chapter id='State_Diagrams'>
|
|
Packit Service |
752078 |
<title>State Diagrams</title>
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
These state diagrams are designed to cover all actions of both the
|
|
Packit Service |
752078 |
client and the SM.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<sect1 id='Client_State_Diagram'>
|
|
Packit Service |
752078 |
<title>Client State Diagram</title>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<literallayout>
|
|
Packit Service |
752078 |
<emphasis remap='I'>start:</emphasis>
|
|
Packit Service |
752078 |
ICE protocol setup complete → <emphasis remap='C'>register</emphasis></literallayout>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<literallayout>
|
|
Packit Service |
752078 |
<emphasis remap='I'>register:</emphasis>
|
|
Packit Service |
752078 |
send <emphasis remap='B'>RegisterClient</emphasis> → <emphasis remap='C'>collect-id</emphasis></literallayout>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<literallayout remap='DS'>
|
|
Packit Service |
752078 |
<emphasis remap='I'>collect-id:</emphasis>
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>RegisterClientReply</emphasis> → <emphasis remap='C'>idle</emphasis></literallayout>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<literallayout remap='DS'>
|
|
Packit Service |
752078 |
<emphasis remap='I'>shutdown-cancelled:</emphasis>
|
|
Packit Service |
752078 |
send <emphasis remap='B'>SaveYourselfDone</emphasis> → <emphasis remap='C'>idle</emphasis></literallayout>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<literallayout remap='DS'>
|
|
Packit Service |
752078 |
<emphasis remap='I'>idle:</emphasis> [Undoes any freeze of interaction with user.]
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>Die</emphasis> → <emphasis remap='C'>die</emphasis>
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>SaveYourself</emphasis> → <emphasis remap='C'>freeze-interaction</emphasis>
|
|
Packit Service |
752078 |
send <emphasis remap='B'>GetProperties</emphasis> → <emphasis remap='C'>idle</emphasis>
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>GetPropertiesReply</emphasis> → <emphasis remap='C'>idle</emphasis>
|
|
Packit Service |
752078 |
send <emphasis remap='B'>SetProperties</emphasis> → <emphasis remap='C'>idle</emphasis>
|
|
Packit Service |
752078 |
send <emphasis remap='B'>DeleteProperties</emphasis> → <emphasis remap='C'>idle</emphasis>
|
|
Packit Service |
752078 |
send <emphasis remap='B'>ConnectionClosed</emphasis> → <emphasis remap='C'>connection-closed</emphasis>
|
|
Packit Service |
752078 |
send <emphasis remap='B'>SaveYourselfRequest</emphasis> → <emphasis remap='C'>idle</emphasis>
|
|
Packit Service |
752078 |
</literallayout>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<literallayout remap='DS'>
|
|
Packit Service |
752078 |
<emphasis remap='I'>die:</emphasis>
|
|
Packit Service |
752078 |
send <emphasis remap='B'>ConnectionClosed</emphasis> → <emphasis remap='C'>connection-closed</emphasis></literallayout>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<literallayout remap='DS'>
|
|
Packit Service |
752078 |
<emphasis remap='I'>freeze-interaction:</emphasis>
|
|
Packit Service |
752078 |
freeze interaction with user → <emphasis remap='C'>save-yourself</emphasis></literallayout>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<literallayout remap='DS'>
|
|
Packit Service |
752078 |
<emphasis remap='I'>save-yourself:</emphasis>
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>ShutdownCancelled</emphasis> → <emphasis remap='C'>shutdown-cancelled</emphasis>
|
|
Packit Service |
752078 |
send <emphasis remap='B'>SetProperties</emphasis> → <emphasis remap='C'>save-yourself</emphasis>
|
|
Packit Service |
752078 |
send <emphasis remap='B'>DeleteProperties</emphasis> → <emphasis remap='C'>save-yourself</emphasis>
|
|
Packit Service |
752078 |
send <emphasis remap='B'>GetProperties</emphasis> → <emphasis remap='C'>save-yourself</emphasis>
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>GetPropertiesReply</emphasis> → <emphasis remap='C'>save-yourself</emphasis>
|
|
Packit Service |
752078 |
send <emphasis remap='B'>InteractRequest</emphasis> → <emphasis remap='C'>interact-request</emphasis>
|
|
Packit Service |
752078 |
send <emphasis remap='B'>SaveYourselfPhase2Request</emphasis> → waiting-for-phase2
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<emphasis remap='I'>save-yourself:</emphasis>
|
|
Packit Service |
752078 |
if shutdown mode:
|
|
Packit Service |
752078 |
send <emphasis remap='B'>SaveYourselfDone</emphasis> → <emphasis remap='C'>save-yourself-done</emphasis>
|
|
Packit Service |
752078 |
otherwise:
|
|
Packit Service |
752078 |
send <emphasis remap='B'>SaveYourselfDone</emphasis> → <emphasis remap='C'>idle</emphasis></literallayout>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<literallayout remap='DS'>
|
|
Packit Service |
752078 |
<emphasis remap='I'>waiting-for-phase2:</emphasis>
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>ShutdownCancelled</emphasis> → <emphasis remap='C'>shutdown-cancelled</emphasis>
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>SaveYourselfPhase2</emphasis> → <emphasis remap='C'>phase2</emphasis></literallayout>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<literallayout remap='DS'>
|
|
Packit Service |
752078 |
<emphasis remap='I'>phase2:</emphasis>
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>ShutdownCancelled</emphasis> → <emphasis remap='C'>shutdown-cancelled</emphasis>
|
|
Packit Service |
752078 |
send <emphasis remap='B'>SetProperties</emphasis> → <emphasis remap='C'>save-yourself</emphasis>
|
|
Packit Service |
752078 |
send <emphasis remap='B'>DeleteProperties</emphasis> → <emphasis remap='C'>save-yourself</emphasis>
|
|
Packit Service |
752078 |
send <emphasis remap='B'>GetProperties</emphasis> → <emphasis remap='C'>save-yourself</emphasis>
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>GetPropertiesReply</emphasis> → <emphasis remap='C'>save-yourself</emphasis>
|
|
Packit Service |
752078 |
send <emphasis remap='B'>InteractRequest</emphasis> → <emphasis remap='C'>interact-request</emphasis> (errors only)
|
|
Packit Service |
752078 |
if shutdown mode:
|
|
Packit Service |
752078 |
send <emphasis remap='B'>SaveYourselfDone</emphasis> → <emphasis remap='C'>save-yourself-done</emphasis>
|
|
Packit Service |
752078 |
otherwise:
|
|
Packit Service |
752078 |
send <emphasis remap='B'>SaveYourselfDone</emphasis> → <emphasis remap='C'>idle</emphasis></literallayout>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<literallayout remap='DS'>
|
|
Packit Service |
752078 |
<emphasis remap='I'>interact-request:</emphasis>
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>Interact</emphasis> → <emphasis remap='C'>interact</emphasis>
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>ShutdownCancelled</emphasis> → <emphasis remap='C'>shutdown-cancelled</emphasis></literallayout>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<literallayout remap='DS'>
|
|
Packit Service |
752078 |
<emphasis remap='I'>interact:</emphasis>
|
|
Packit Service |
752078 |
send <emphasis remap='B'>InteractDone</emphasis> → <emphasis remap='C'>save-yourself</emphasis>
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>ShutdownCancelled</emphasis> → <emphasis remap='C'>shutdown-cancelled</emphasis></literallayout>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<literallayout remap='DS'>
|
|
Packit Service |
752078 |
<emphasis remap='I'>save-yourself-done:</emphasis> (changing state is forbidden)
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>SaveComplete</emphasis> → <emphasis remap='C'>idle</emphasis>
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>Die</emphasis> → <emphasis remap='C'>die</emphasis>
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>ShutdownCancelled</emphasis> → <emphasis remap='C'>idle</emphasis></literallayout>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<literallayout remap='DS'>
|
|
Packit Service |
752078 |
<emphasis remap='I'>connection-closed:</emphasis>
|
|
Packit Service |
752078 |
client stops participating in session </literallayout>
|
|
Packit Service |
752078 |
</sect1>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<sect1 id='Session_Manager_State_Diagram'>
|
|
Packit Service |
752078 |
<title>Session Manager State Diagram</title>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<literallayout remap='DS'>
|
|
Packit Service |
752078 |
<emphasis remap='I'>start:</emphasis>
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>ProtocolSetup</emphasis> → <emphasis remap='C'>protocol-setup</emphasis></literallayout>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<literallayout remap='DS'>
|
|
Packit Service |
752078 |
<emphasis remap='I'>protocol-setup:</emphasis>
|
|
Packit Service |
752078 |
send <emphasis remap='B'>ProtocolSetupReply</emphasis> → <emphasis remap='C'>register</emphasis></literallayout>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<literallayout remap='DS'>
|
|
Packit Service |
752078 |
<emphasis remap='I'>register:</emphasis>
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>RegisterClient</emphasis> → <emphasis remap='C'>acknowledge-register</emphasis>
|
|
Packit Service |
752078 |
</literallayout>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<literallayout remap='DS'>
|
|
Packit Service |
752078 |
<emphasis remap='I'>acknowledge-register:</emphasis>
|
|
Packit Service |
752078 |
send <emphasis remap='B'>RegisterClientReply</emphasis> → <emphasis remap='C'>idle</emphasis>
|
|
Packit Service |
752078 |
</literallayout>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<literallayout remap='DS'>
|
|
Packit Service |
752078 |
<emphasis remap='I'>idle:</emphasis>
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>SetProperties</emphasis> → <emphasis remap='C'>idle</emphasis>
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>DeleteProperties</emphasis> → <emphasis remap='C'>idle</emphasis>
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>ConnectionClosed</emphasis> → <emphasis remap='C'>start</emphasis>
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>GetProperties</emphasis> → <emphasis remap='C'>get-properties</emphasis>
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>SaveYourselfRequest</emphasis> → <emphasis remap='C'>save-yourself</emphasis>
|
|
Packit Service |
752078 |
send <emphasis remap='B'>SaveYourself</emphasis> → <emphasis remap='C'>saving-yourself</emphasis>
|
|
Packit Service |
752078 |
</literallayout>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<literallayout remap='DS'>
|
|
Packit Service |
752078 |
<emphasis remap='I'>save-yourself:</emphasis>
|
|
Packit Service |
752078 |
send <emphasis remap='B'>SaveYourself</emphasis> → <emphasis remap='C'>saving-yourself</emphasis>
|
|
Packit Service |
752078 |
</literallayout>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<literallayout remap='DS'>
|
|
Packit Service |
752078 |
<emphasis remap='I'>get-properties:</emphasis>
|
|
Packit Service |
752078 |
send <emphasis remap='B'>GetPropertiesReply</emphasis> → <emphasis remap='C'>idle</emphasis>
|
|
Packit Service |
752078 |
</literallayout>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<literallayout remap='DS'>
|
|
Packit Service |
752078 |
<emphasis remap='I'>saving-get-properties:</emphasis>
|
|
Packit Service |
752078 |
send <emphasis remap='B'>GetPropertiesReply</emphasis> → <emphasis remap='C'>saving-yourself</emphasis>
|
|
Packit Service |
752078 |
</literallayout>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<literallayout remap='DS'>
|
|
Packit Service |
752078 |
<emphasis remap='I'>saving-yourself:</emphasis>
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>InteractRequest</emphasis> → <emphasis remap='C'>saving-yourself</emphasis>
|
|
Packit Service |
752078 |
send <emphasis remap='B'>Interact</emphasis> → <emphasis remap='C'>saving-yourself</emphasis>
|
|
Packit Service |
752078 |
send <emphasis remap='B'>ShutdownCancelled</emphasis> → <emphasis remap='C'>idle</emphasis>
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>InteractDone</emphasis> → <emphasis remap='C'>saving-yourself</emphasis>
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>SetProperties</emphasis> → <emphasis remap='C'>saving-yourself</emphasis>
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>DeleteProperties</emphasis> → <emphasis remap='C'>saving-yourself</emphasis>
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>GetProperties</emphasis> → <emphasis remap='C'>saving-get-properties</emphasis>
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>SaveYourselfPhase2Request</emphasis> → <emphasis remap='C'>start-phase2</emphasis>
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>SaveYourselfDone</emphasis> → <emphasis remap='C'>save-yourself-done</emphasis>
|
|
Packit Service |
752078 |
</literallayout>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<literallayout remap='DS'>
|
|
Packit Service |
752078 |
<emphasis remap='I'>start-phase2:</emphasis>
|
|
Packit Service |
752078 |
If all clients have sent either SaveYourselfPhase2Request or SaveYourselfDone:
|
|
Packit Service |
752078 |
send <emphasis remap='B'>SaveYourselfPhase2</emphasis> → <emphasis remap='C'>phase2</emphasis>
|
|
Packit Service |
752078 |
else
|
|
Packit Service |
752078 |
→ <emphasis remap='C'>saving-yourself</emphasis>
|
|
Packit Service |
752078 |
</literallayout>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<literallayout remap='DS'>
|
|
Packit Service |
752078 |
<emphasis remap='I'>phase2:</emphasis>
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>InteractRequest</emphasis> → <emphasis remap='C'>saving-yourself</emphasis>
|
|
Packit Service |
752078 |
send <emphasis remap='B'>Interact</emphasis> → <emphasis remap='C'>saving-yourself</emphasis>
|
|
Packit Service |
752078 |
send <emphasis remap='B'>ShutdownCancelled</emphasis> → <emphasis remap='C'>idle</emphasis>
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>InteractDone</emphasis> → <emphasis remap='C'>saving-yourself</emphasis>
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>SetProperties</emphasis> → <emphasis remap='C'>saving-yourself</emphasis>
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>DeleteProperties</emphasis> → <emphasis remap='C'>saving-yourself</emphasis>
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>GetProperties</emphasis> → <emphasis remap='C'>saving-get-properties</emphasis>
|
|
Packit Service |
752078 |
receive <emphasis remap='B'>SaveYourselfDone</emphasis> → <emphasis remap='C'>save-yourself-done</emphasis>
|
|
Packit Service |
752078 |
</literallayout>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<literallayout remap='DS'>
|
|
Packit Service |
752078 |
<emphasis remap='I'>save-yourself-done:</emphasis>
|
|
Packit Service |
752078 |
If all clients are saved:
|
|
Packit Service |
752078 |
If shutting down:
|
|
Packit Service |
752078 |
send <emphasis remap='B'>Die</emphasis> → <emphasis remap='C'>die</emphasis>
|
|
Packit Service |
752078 |
otherwise
|
|
Packit Service |
752078 |
send <emphasis remap='B'>SaveComplete</emphasis> → <emphasis remap='C'>idle</emphasis>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
If some clients are not saved:
|
|
Packit Service |
752078 |
→ <emphasis remap='C'>saving-yourself</emphasis>
|
|
Packit Service |
752078 |
</literallayout>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<literallayout remap='DS'>
|
|
Packit Service |
752078 |
<emphasis remap='I'>die:</emphasis>
|
|
Packit Service |
752078 |
SM stops accepting connections
|
|
Packit Service |
752078 |
</literallayout>
|
|
Packit Service |
752078 |
</sect1>
|
|
Packit Service |
752078 |
</chapter>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<chapter id='Protocol_Encoding'>
|
|
Packit Service |
752078 |
<title>Protocol Encoding</title>
|
|
Packit Service |
752078 |
<sect1 id='Types'>
|
|
Packit Service |
752078 |
<title>Types</title>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<informaltable frame='none'>
|
|
Packit Service |
752078 |
<tgroup cols='2' align='left' colsep='0' rowsep='0'>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<colspec colname='c1' colwidth='1.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c2' colwidth='10.0*'/>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry namest='c1' nameend='c2'><emphasis role="bold">BOOL</emphasis></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>0</entry>
|
|
Packit Service |
752078 |
<entry>False</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>True</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</tgroup>
|
|
Packit Service |
752078 |
<tgroup cols='2' align='left' colsep='0' rowsep='0'>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<colspec colname='c1' colwidth='1.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c2' colwidth='10.0*'/>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry namest='c1' nameend='c2'><emphasis role="bold">INTERACT_STYLE</emphasis></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>0</entry>
|
|
Packit Service |
752078 |
<entry>None</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>Errors</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>2</entry>
|
|
Packit Service |
752078 |
<entry>Any</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</tgroup>
|
|
Packit Service |
752078 |
<tgroup cols='2' align='left' colsep='0' rowsep='0'>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<colspec colname='c1' colwidth='1.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c2' colwidth='10.0*'/>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry namest='c1' nameend='c2'><emphasis role="bold">DIALOG_TYPE</emphasis></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>0</entry>
|
|
Packit Service |
752078 |
<entry>Error</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>Normal</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</tgroup>
|
|
Packit Service |
752078 |
<tgroup cols='2' align='left' colsep='0' rowsep='0'>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<colspec colname='c1' colwidth='1.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c2' colwidth='10.0*'/>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry namest='c1' nameend='c2'><emphasis role="bold">SAVE_TYPE</emphasis></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>0</entry>
|
|
Packit Service |
752078 |
<entry>Global</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>Local</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>2</entry>
|
|
Packit Service |
752078 |
<entry>Both</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</tgroup>
|
|
Packit Service |
752078 |
<tgroup cols='3' align='left' colsep='0' rowsep='0'>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<colspec colname='c1' colwidth='1.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c2' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c3' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry namest='c1' nameend='c2'><emphasis role="bold">ARRAY8</emphasis></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>4</entry>
|
|
Packit Service |
752078 |
<entry>CARD32</entry>
|
|
Packit Service |
752078 |
<entry>length</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>n</entry>
|
|
Packit Service |
752078 |
<entry>ListofCARD8, the array</entry>
|
|
Packit Service |
752078 |
<entry>p = pad (4 + n, 8)</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>2</entry>
|
|
Packit Service |
752078 |
<entry>Both</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</tgroup>
|
|
Packit Service |
752078 |
<tgroup cols='3' align='left' colsep='0' rowsep='0'>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<colspec colname='c1' colwidth='1.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c2' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c3' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry namest='c1' nameend='c2'><emphasis role="bold">LISTofARRAY8</emphasis></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>4</entry>
|
|
Packit Service |
752078 |
<entry>CARD32</entry>
|
|
Packit Service |
752078 |
<entry>count</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>4</entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
<entry>unused</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>a</entry>
|
|
Packit Service |
752078 |
<entry>ARRAY8</entry>
|
|
Packit Service |
752078 |
<entry>first array</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>b</entry>
|
|
Packit Service |
752078 |
<entry>ARRAY8</entry>
|
|
Packit Service |
752078 |
<entry>second array</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>.</entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>.</entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>.</entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>q</entry>
|
|
Packit Service |
752078 |
<entry>ARRAY8</entry>
|
|
Packit Service |
752078 |
<entry>last array</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</tgroup>
|
|
Packit Service |
752078 |
<tgroup cols='3' align='left' colsep='0' rowsep='0'>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<colspec colname='c1' colwidth='1.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c2' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c3' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry namest='c1' nameend='c2'><emphasis role="bold">PROPERTY</emphasis></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>a</entry>
|
|
Packit Service |
752078 |
<entry>ARRAY8</entry>
|
|
Packit Service |
752078 |
<entry>name</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>b</entry>
|
|
Packit Service |
752078 |
<entry>ARRAY8</entry>
|
|
Packit Service |
752078 |
<entry>type (XPCS encoded in Latin-1, case sensitive)</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>c</entry>
|
|
Packit Service |
752078 |
<entry>LISTofARRAY8</entry>
|
|
Packit Service |
752078 |
<entry>values</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</tgroup>
|
|
Packit Service |
752078 |
<tgroup cols='3' align='left' colsep='0' rowsep='0'>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<colspec colname='c1' colwidth='1.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c2' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='32' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry namest='c1' nameend='c2'><emphasis role="bold">LISTofPROPERTY</emphasis></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>4</entry>
|
|
Packit Service |
752078 |
<entry>CARD32</entry>
|
|
Packit Service |
752078 |
<entry>count</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>4</entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
<entry>unused</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>a</entry>
|
|
Packit Service |
752078 |
<entry>PROPERTY</entry>
|
|
Packit Service |
752078 |
<entry>first property</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>b</entry>
|
|
Packit Service |
752078 |
<entry>PROPERTY</entry>
|
|
Packit Service |
752078 |
<entry>second property</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>.</entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>.</entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>.</entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>q</entry>
|
|
Packit Service |
752078 |
<entry>PROPERTY</entry>
|
|
Packit Service |
752078 |
<entry>last property</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</tgroup>
|
|
Packit Service |
752078 |
</informaltable>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</sect1>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<sect1 id='Messages'>
|
|
Packit Service |
752078 |
<title>Messages</title>
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
XSMP is a sub-protocol of ICE. The major opcode is
|
|
Packit Service |
752078 |
assigned at run-time by ICE and is represented here
|
|
Packit Service |
752078 |
by '<literal>?</literal>'.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
To start the XSMP protocol, the client sends the server an
|
|
Packit Service |
752078 |
ICE <function>ProtocolSetup</function> message.
|
|
Packit Service |
752078 |
The protocol-name field should be specified as "<literal>XSMP</literal>",
|
|
Packit Service |
752078 |
the major version of the protocol is 1, the minor version is 0. These
|
|
Packit Service |
752078 |
values may change if the protocol is revised. The minor version
|
|
Packit Service |
752078 |
number will be incremented if the change is compatible, otherwise the
|
|
Packit Service |
752078 |
major version number will be incremented.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
In <function>ProtocolReply</function> message sent by the session
|
|
Packit Service |
752078 |
manager, the XSMP protocol defines the vendor parameter as product
|
|
Packit Service |
752078 |
identification of the session manager, and defines the release
|
|
Packit Service |
752078 |
parameter as the software release identification of the session
|
|
Packit Service |
752078 |
manager. The session manager should supply this information in the
|
|
Packit Service |
752078 |
ICE <function>ProtocolReply</function> message.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<informaltable frame='none'>
|
|
Packit Service |
752078 |
<tgroup cols='3' align='left' colsep='0' rowsep='0'>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<colspec colname='c1' colwidth='1.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c2' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c3' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry namest="c1" nameend="c3"><emphasis role="bold"><function>RegisterClient</function></emphasis></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>?</entry>
|
|
Packit Service |
752078 |
<entry>XSMP</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>opcode</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>2</entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
<entry>unused</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>4</entry>
|
|
Packit Service |
752078 |
<entry>a/8</entry>
|
|
Packit Service |
752078 |
<entry>length of remaining data in 8-byte units</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>a</entry>
|
|
Packit Service |
752078 |
<entry>ARRAY8</entry>
|
|
Packit Service |
752078 |
<entry>previous-ID</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</tgroup>
|
|
Packit Service |
752078 |
<tgroup cols='3' align='left' colsep='0' rowsep='0'>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<colspec colname='c1' colwidth='1.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c2' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c3' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry namest='c1' nameend='c3'><emphasis role="bold"><function>RegisterClientReply</function></emphasis></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>?</entry>
|
|
Packit Service |
752078 |
<entry>XSMP</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>2</entry>
|
|
Packit Service |
752078 |
<entry>opcode</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>2</entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
<entry>unused</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>4</entry>
|
|
Packit Service |
752078 |
<entry>a/8</entry>
|
|
Packit Service |
752078 |
<entry>length of remaining data in 8-byte units</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>a</entry>
|
|
Packit Service |
752078 |
<entry>ARRAY8</entry>
|
|
Packit Service |
752078 |
<entry>client-ID</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</tgroup>
|
|
Packit Service |
752078 |
<tgroup cols='3' align='left' colsep='0' rowsep='0'>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<colspec colname='c1' colwidth='1.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c2' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c3' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry namest='c1' nameend='c3'><emphasis role="bold"><function>SaveYourself</function></emphasis></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>?</entry>
|
|
Packit Service |
752078 |
<entry>XSMP</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>3</entry>
|
|
Packit Service |
752078 |
<entry>opcode</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>2</entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
<entry>unused</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>4</entry>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>length of remaining data in 8-byte units</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>SAVE_TYPE</entry>
|
|
Packit Service |
752078 |
<entry>type</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>BOOL</entry>
|
|
Packit Service |
752078 |
<entry>shutdown</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>INTERACT_STYLE</entry>
|
|
Packit Service |
752078 |
<entry>interact-style</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>BOOL</entry>
|
|
Packit Service |
752078 |
<entry>fast</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>4</entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
<entry>unused</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</tgroup>
|
|
Packit Service |
752078 |
<tgroup cols='3' align='left' colsep='0' rowsep='0'>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<colspec colname='c1' colwidth='1.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c2' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c3' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry namest="c1" nameend="c3"><emphasis role="bold"><function>SaveYourselfRequest</function></emphasis></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>?</entry>
|
|
Packit Service |
752078 |
<entry>XSMP</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>4</entry>
|
|
Packit Service |
752078 |
<entry>opcode</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>2</entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
<entry>unused</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>4</entry>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>length of remainning data in 8-byte units</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>SAVE_TYPE</entry>
|
|
Packit Service |
752078 |
<entry>type</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>BOOL</entry>
|
|
Packit Service |
752078 |
<entry>shutdown</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>INTERACT_STYLE</entry>
|
|
Packit Service |
752078 |
<entry>interact-style</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>BOOL</entry>
|
|
Packit Service |
752078 |
<entry>fast</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>3</entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
<entry>unused</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</tgroup>
|
|
Packit Service |
752078 |
<tgroup cols='3' align='left' colsep='0' rowsep='0'>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<colspec colname='c1' colwidth='1.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c2' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c3' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry namest="c1" nameend="c3"><emphasis role="bold"><function>InteractRequest</function></emphasis></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>?</entry>
|
|
Packit Service |
752078 |
<entry>XSMP</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>5</entry>
|
|
Packit Service |
752078 |
<entry>opcode</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>DIALOG_TYPE</entry>
|
|
Packit Service |
752078 |
<entry>dialog type</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
<entry>unused</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>4</entry>
|
|
Packit Service |
752078 |
<entry>0</entry>
|
|
Packit Service |
752078 |
<entry>length of remaining data in 8-byte units</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</tgroup>
|
|
Packit Service |
752078 |
<tgroup cols='3' align='left' colsep='0' rowsep='0'>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<colspec colname='c1' colwidth='1.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c2' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c3' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry namest="c1" nameend="c3"><emphasis role="bold"><function>Interact</function></emphasis></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>?</entry>
|
|
Packit Service |
752078 |
<entry>XSMP</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>6</entry>
|
|
Packit Service |
752078 |
<entry>opcode</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>2</entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
<entry>unused</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>4</entry>
|
|
Packit Service |
752078 |
<entry>0</entry>
|
|
Packit Service |
752078 |
<entry>length of remaining data in 8-byte units</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</tgroup>
|
|
Packit Service |
752078 |
<tgroup cols='3' align='left' colsep='0' rowsep='0'>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<colspec colname='c1' colwidth='1.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c2' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c3' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry namest="c1" nameend="c3"><emphasis role="bold"><function>InteractDone</function></emphasis></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>?</entry>
|
|
Packit Service |
752078 |
<entry>XSMP</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>7</entry>
|
|
Packit Service |
752078 |
<entry>opcode</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>BOOL</entry>
|
|
Packit Service |
752078 |
<entry>cancel-shutdown</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
<entry>unused</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</tgroup>
|
|
Packit Service |
752078 |
<tgroup cols='3' align='left' colsep='0' rowsep='0'>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<colspec colname='c1' colwidth='1.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c2' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c3' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry namest="c1" nameend="c3"><emphasis role="bold"><function>InteractDone</function></emphasis></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>?</entry>
|
|
Packit Service |
752078 |
<entry>XSMP</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>7</entry>
|
|
Packit Service |
752078 |
<entry>opcode</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>BOOL</entry>
|
|
Packit Service |
752078 |
<entry>cancel-shutdown</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
<entry>unused</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>4</entry>
|
|
Packit Service |
752078 |
<entry>0</entry>
|
|
Packit Service |
752078 |
<entry>length of remaining data in 8-byte units</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</tgroup>
|
|
Packit Service |
752078 |
<tgroup cols='3' align='left' colsep='0' rowsep='0'>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<colspec colname='c1' colwidth='1.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c2' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c3' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry namest="c1" nameend="c3"><emphasis role="bold"><function>SaveYourselfDone</function></emphasis></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>?</entry>
|
|
Packit Service |
752078 |
<entry>XSMP</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>8</entry>
|
|
Packit Service |
752078 |
<entry>opcode</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>BOOL</entry>
|
|
Packit Service |
752078 |
<entry>success</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
<entry>unused</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>4</entry>
|
|
Packit Service |
752078 |
<entry>0</entry>
|
|
Packit Service |
752078 |
<entry>length of remaining data in 8-byte units</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</tgroup>
|
|
Packit Service |
752078 |
<tgroup cols='3' align='left' colsep='0' rowsep='0'>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<colspec colname='c1' colwidth='1.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c2' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c3' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry namest="c1" nameend="c3"><emphasis role="bold"><function>Die</function></emphasis></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>?</entry>
|
|
Packit Service |
752078 |
<entry>XSMP</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>9</entry>
|
|
Packit Service |
752078 |
<entry>opcode</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
<entry>unused</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>4</entry>
|
|
Packit Service |
752078 |
<entry>0</entry>
|
|
Packit Service |
752078 |
<entry>length of remaining data in 8-byte units</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</tgroup>
|
|
Packit Service |
752078 |
<tgroup cols='3' align='left' colsep='0' rowsep='0'>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<colspec colname='c1' colwidth='1.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c2' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c3' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry namest="c1" nameend="c3"><emphasis role="bold"><function>ShutdownCancelled</function></emphasis></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>?</entry>
|
|
Packit Service |
752078 |
<entry>XSMP</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>10</entry>
|
|
Packit Service |
752078 |
<entry>opcode</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>2</entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
<entry>unused</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>4</entry>
|
|
Packit Service |
752078 |
<entry>0</entry>
|
|
Packit Service |
752078 |
<entry>length of remaining data in 8-byte units</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</tgroup>
|
|
Packit Service |
752078 |
<tgroup cols='3' align='left' colsep='0' rowsep='0'>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<colspec colname='c1' colwidth='1.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c2' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c3' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry namest="c1" nameend="c3"><emphasis role="bold"><function>ConnectionClosed</function></emphasis></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>?</entry>
|
|
Packit Service |
752078 |
<entry>XSMP</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>11</entry>
|
|
Packit Service |
752078 |
<entry>opcode</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>2</entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
<entry>unused</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>4</entry>
|
|
Packit Service |
752078 |
<entry>a/8</entry>
|
|
Packit Service |
752078 |
<entry>length of remaining data in 8-byte units</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>a</entry>
|
|
Packit Service |
752078 |
<entry>LISTofARRAY8</entry>
|
|
Packit Service |
752078 |
<entry>reason</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</tgroup>
|
|
Packit Service |
752078 |
<tgroup cols='3' align='left' colsep='0' rowsep='0'>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<colspec colname='c1' colwidth='1.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c2' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c3' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry namest="c1" nameend="c3"><emphasis role="bold"><function>SetProperties</function></emphasis></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>?</entry>
|
|
Packit Service |
752078 |
<entry>XSMP</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>12</entry>
|
|
Packit Service |
752078 |
<entry>opcode</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>2</entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
<entry>unused</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>4</entry>
|
|
Packit Service |
752078 |
<entry>a/8</entry>
|
|
Packit Service |
752078 |
<entry>length of remaining data in 8-byte units</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>a</entry>
|
|
Packit Service |
752078 |
<entry>LISTofPROPERTY</entry>
|
|
Packit Service |
752078 |
<entry>properties</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</tgroup>
|
|
Packit Service |
752078 |
<tgroup cols='3' align='left' colsep='0' rowsep='0'>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<colspec colname='c1' colwidth='1.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c2' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c3' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry namest="c1" nameend="c3"><emphasis role="bold"><function>DeleteProperties</function></emphasis></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>?</entry>
|
|
Packit Service |
752078 |
<entry>XSMP</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>13</entry>
|
|
Packit Service |
752078 |
<entry>opcode</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>2</entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
<entry>unused</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>4</entry>
|
|
Packit Service |
752078 |
<entry>a/8</entry>
|
|
Packit Service |
752078 |
<entry>length of remaining data in 8-byte units</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>a</entry>
|
|
Packit Service |
752078 |
<entry>LISTofPROPERTY</entry>
|
|
Packit Service |
752078 |
<entry>properties</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</tgroup>
|
|
Packit Service |
752078 |
<tgroup cols='3' align='left' colsep='0' rowsep='0'>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<colspec colname='c1' colwidth='1.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c2' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c3' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry namest="c1" nameend="c3"><emphasis role="bold"><function>GetProperties</function></emphasis></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>?</entry>
|
|
Packit Service |
752078 |
<entry>XSMP</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>14</entry>
|
|
Packit Service |
752078 |
<entry>opcode</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>2</entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
<entry>unused</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>4</entry>
|
|
Packit Service |
752078 |
<entry>0</entry>
|
|
Packit Service |
752078 |
<entry>length of remaining data in 8-byte units</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</tgroup>
|
|
Packit Service |
752078 |
<tgroup cols='3' align='left' colsep='0' rowsep='0'>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<colspec colname='c1' colwidth='1.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c2' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c3' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry namest="c1" nameend="c3"><emphasis role="bold"><function>GetPropertiesReply</function></emphasis></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>?</entry>
|
|
Packit Service |
752078 |
<entry>XSMP</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>15</entry>
|
|
Packit Service |
752078 |
<entry>opcode</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>2</entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
<entry>unused</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>4</entry>
|
|
Packit Service |
752078 |
<entry>a/8</entry>
|
|
Packit Service |
752078 |
<entry>length of remaining data in 8-byte units</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>a</entry>
|
|
Packit Service |
752078 |
<entry>LISTofPROPERTY</entry>
|
|
Packit Service |
752078 |
<entry>properties</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</tgroup>
|
|
Packit Service |
752078 |
<tgroup cols='3' align='left' colsep='0' rowsep='0'>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<colspec colname='c1' colwidth='1.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c2' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c3' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry namest="c1" nameend="c3"><emphasis role="bold"><function>SaveYourselfPhase2Request</function></emphasis></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>?</entry>
|
|
Packit Service |
752078 |
<entry>XSMP</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>16</entry>
|
|
Packit Service |
752078 |
<entry>opcode</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>2</entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
<entry>unused</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>4</entry>
|
|
Packit Service |
752078 |
<entry>0</entry>
|
|
Packit Service |
752078 |
<entry>length of remaining data in 8-byte units</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</tgroup>
|
|
Packit Service |
752078 |
<tgroup cols='3' align='left' colsep='0' rowsep='0'>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<colspec colname='c1' colwidth='1.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c2' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c3' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry namest="c1" nameend="c3"><emphasis role="bold"><function>SaveYourselfPhase2</function></emphasis></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>?</entry>
|
|
Packit Service |
752078 |
<entry>XSMP</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>17</entry>
|
|
Packit Service |
752078 |
<entry>opcode</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>2</entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
<entry>unused</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>4</entry>
|
|
Packit Service |
752078 |
<entry>0</entry>
|
|
Packit Service |
752078 |
<entry>length of remaining data in 8-byte units</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</tgroup>
|
|
Packit Service |
752078 |
<tgroup cols='3' align='left' colsep='0' rowsep='0'>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<colspec colname='c1' colwidth='1.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c2' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c3' colwidth='5.0*'/>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry namest="c1" nameend="c3"><emphasis role="bold"><function>SaveComplete</function></emphasis></entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>?</entry>
|
|
Packit Service |
752078 |
<entry>XSMP</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
<entry>18</entry>
|
|
Packit Service |
752078 |
<entry>opcode</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>2</entry>
|
|
Packit Service |
752078 |
<entry></entry>
|
|
Packit Service |
752078 |
<entry>unused</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>4</entry>
|
|
Packit Service |
752078 |
<entry>0</entry>
|
|
Packit Service |
752078 |
<entry>length of remaining data in 8-byte units</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</tgroup>
|
|
Packit Service |
752078 |
</informaltable>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</sect1>
|
|
Packit Service |
752078 |
</chapter>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<chapter id='Predefined_Properties'>
|
|
Packit Service |
752078 |
<title>Predefined Properties</title>
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
All property values are stored in a LISTofARRAY8. If the type of the
|
|
Packit Service |
752078 |
property is CARD8, the value is stored as a LISTofARRAY8 with one
|
|
Packit Service |
752078 |
ARRAY8 that is one byte long. That single byte contains the CARD8.
|
|
Packit Service |
752078 |
If the type of the property is ARRAY8, the value is stored in the
|
|
Packit Service |
752078 |
first element of a single element LISTofARRAY8.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
The required properties must be set each time a client connects with
|
|
Packit Service |
752078 |
the SM. The properties must be set after the client
|
|
Packit Service |
752078 |
sends <function>RegisterClient</function> and before the client
|
|
Packit Service |
752078 |
sends <function>SaveYourselfDone</function> Otherwise, the behavior of
|
|
Packit Service |
752078 |
the session manager is not defined.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
Clients may set, get, and delete nonstandard properties. The lifetime
|
|
Packit Service |
752078 |
of stored properties does not extend into subsequent sessions.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<informaltable frame='topbot'>
|
|
Packit Service |
752078 |
<tgroup cols='4' align='left' colsep='0' rowsep='0'>
|
|
Packit Service |
752078 |
<colspec colname='c1' colwidth='2.0*' />
|
|
Packit Service |
752078 |
<colspec colname='c2' colwidth='2.0*' />
|
|
Packit Service |
752078 |
<colspec colname='c3' colwidth='2.0*' />
|
|
Packit Service |
752078 |
<colspec colname='c4' colwidth='1.0*' />
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row rowsep='1'>
|
|
Packit Service |
752078 |
<entry>Name</entry>
|
|
Packit Service |
752078 |
<entry>Type</entry>
|
|
Packit Service |
752078 |
<entry>Posix Type</entry>
|
|
Packit Service |
752078 |
<entry>Required?</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>CloneCommand</entry>
|
|
Packit Service |
752078 |
<entry>OS-specific</entry>
|
|
Packit Service |
752078 |
<entry>LISTofARRAY8</entry>
|
|
Packit Service |
752078 |
<entry>Yes</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>CurrentDirectory</entry>
|
|
Packit Service |
752078 |
<entry>OS-specific</entry>
|
|
Packit Service |
752078 |
<entry>ARRAY8</entry>
|
|
Packit Service |
752078 |
<entry>No</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>DiscardCommand</entry>
|
|
Packit Service |
752078 |
<entry>OS-specific</entry>
|
|
Packit Service |
752078 |
<entry>LISTofARRAY8</entry>
|
|
Packit Service |
752078 |
<entry>No*</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>Environment</entry>
|
|
Packit Service |
752078 |
<entry>OS-specific</entry>
|
|
Packit Service |
752078 |
<entry>LISTofARRAY8</entry>
|
|
Packit Service |
752078 |
<entry>No</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>ProcessID</entry>
|
|
Packit Service |
752078 |
<entry>OS-specific</entry>
|
|
Packit Service |
752078 |
<entry>ARRAY8</entry>
|
|
Packit Service |
752078 |
<entry>No</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>Program</entry>
|
|
Packit Service |
752078 |
<entry>OS-specific</entry>
|
|
Packit Service |
752078 |
<entry>ARRAY8</entry>
|
|
Packit Service |
752078 |
<entry>Yes</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>RestartCommand</entry>
|
|
Packit Service |
752078 |
<entry>OS-specific</entry>
|
|
Packit Service |
752078 |
<entry>LISTofARRAY8</entry>
|
|
Packit Service |
752078 |
<entry>Yes</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>ResignCommand</entry>
|
|
Packit Service |
752078 |
<entry>OS-specific</entry>
|
|
Packit Service |
752078 |
<entry>LISTofARRAY8</entry>
|
|
Packit Service |
752078 |
<entry>No</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>RestartStyleHint</entry>
|
|
Packit Service |
752078 |
<entry>CARD8</entry>
|
|
Packit Service |
752078 |
<entry>CARD8</entry>
|
|
Packit Service |
752078 |
<entry>No</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>ShutdownCommand</entry>
|
|
Packit Service |
752078 |
<entry>OS-specific</entry>
|
|
Packit Service |
752078 |
<entry>LISTofARRAY8</entry>
|
|
Packit Service |
752078 |
<entry>No</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>UserID</entry>
|
|
Packit Service |
752078 |
<entry>ARRAY8</entry>
|
|
Packit Service |
752078 |
<entry>ARRAY8</entry>
|
|
Packit Service |
752078 |
<entry>Yes</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</tgroup>
|
|
Packit Service |
752078 |
</informaltable>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
* Required if any state is stored in an external repository (e.g., state file).
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<variablelist remap='IP'>
|
|
Packit Service |
752078 |
<varlistentry>
|
|
Packit Service |
752078 |
<term>CloneCommand</term>
|
|
Packit Service |
752078 |
<listitem> <para>
|
|
Packit Service |
752078 |
This is like the <function>RestartCommand</function> except it
|
|
Packit Service |
752078 |
restarts a copy of the application. The only difference is that the
|
|
Packit Service |
752078 |
application doesn't supply its client id at register time. On POSIX
|
|
Packit Service |
752078 |
systems the type should be a LISTofARRAY8.
|
|
Packit Service |
752078 |
</para></listitem>
|
|
Packit Service |
752078 |
</varlistentry>
|
|
Packit Service |
752078 |
<varlistentry>
|
|
Packit Service |
752078 |
<term>CurrentDirectory</term>
|
|
Packit Service |
752078 |
<listitem><para>
|
|
Packit Service |
752078 |
On POSIX-based systems specifies the value of the current directory that
|
|
Packit Service |
752078 |
needs to be set up prior to starting the program and should be of type ARRAY8.
|
|
Packit Service |
752078 |
</para></listitem>
|
|
Packit Service |
752078 |
</varlistentry>
|
|
Packit Service |
752078 |
<varlistentry>
|
|
Packit Service |
752078 |
<term>DiscardCommand</term>
|
|
Packit Service |
752078 |
<listitem><para>
|
|
Packit Service |
752078 |
The discard command contains a command that when delivered to the host
|
|
Packit Service |
752078 |
that the client is running on (determined from the connection), will
|
|
Packit Service |
752078 |
cause it to discard any information about the current state. If this
|
|
Packit Service |
752078 |
command is not specified, the SM will assume that all of the client's
|
|
Packit Service |
752078 |
state is encoded in the <function>RestartCommand</function> On
|
|
Packit Service |
752078 |
POSIX systems the type should be LISTofARRAY8.
|
|
Packit Service |
752078 |
</para></listitem>
|
|
Packit Service |
752078 |
</varlistentry>
|
|
Packit Service |
752078 |
<varlistentry>
|
|
Packit Service |
752078 |
<term>Environment</term>
|
|
Packit Service |
752078 |
<listitem><para>
|
|
Packit Service |
752078 |
On POSIX based systems, this will be of type LISTofARRAY8 where the
|
|
Packit Service |
752078 |
ARRAY8s alternate between environment variable name and environment
|
|
Packit Service |
752078 |
variable value.
|
|
Packit Service |
752078 |
</para></listitem>
|
|
Packit Service |
752078 |
</varlistentry>
|
|
Packit Service |
752078 |
<varlistentry>
|
|
Packit Service |
752078 |
<term>ProcessID</term>
|
|
Packit Service |
752078 |
<listitem><para>
|
|
Packit Service |
752078 |
This specifies an OS-specific identifier for the process. On POSIX
|
|
Packit Service |
752078 |
systems this should of type ARRAY8 and contain the return value of
|
|
Packit Service |
752078 |
getpid() turned into a Latin-1 (decimal) string.
|
|
Packit Service |
752078 |
</para></listitem>
|
|
Packit Service |
752078 |
</varlistentry>
|
|
Packit Service |
752078 |
<varlistentry>
|
|
Packit Service |
752078 |
<term>Program</term>
|
|
Packit Service |
752078 |
<listitem><para>
|
|
Packit Service |
752078 |
The name of the program that is running. On POSIX systems this should
|
|
Packit Service |
752078 |
be the first parameter passed to execve and should be of type ARRAY8.
|
|
Packit Service |
752078 |
</para></listitem>
|
|
Packit Service |
752078 |
</varlistentry>
|
|
Packit Service |
752078 |
<varlistentry>
|
|
Packit Service |
752078 |
<term>RestartCommand</term>
|
|
Packit Service |
752078 |
<listitem><para>
|
|
Packit Service |
752078 |
The restart command contains a command that when delivered to the host
|
|
Packit Service |
752078 |
that the client is running on (determined from the connection), will
|
|
Packit Service |
752078 |
cause the client to restart in its current state. On POSIX-based
|
|
Packit Service |
752078 |
systems this is of type LISTofARRAY8 and each of the elements in the
|
|
Packit Service |
752078 |
array represents an element in the argv array. This restart command
|
|
Packit Service |
752078 |
should ensure that the client restarts with the specified
|
|
Packit Service |
752078 |
client-ID.
|
|
Packit Service |
752078 |
</para></listitem>
|
|
Packit Service |
752078 |
</varlistentry>
|
|
Packit Service |
752078 |
<varlistentry>
|
|
Packit Service |
752078 |
<term>ResignCommand</term>
|
|
Packit Service |
752078 |
<listitem>
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
A client that sets the <function>RestartStyleHint</function>
|
|
Packit Service |
752078 |
to <function>RestartAnyway</function> uses this property to specify a
|
|
Packit Service |
752078 |
command that undoes the effect of the client and removes any saved
|
|
Packit Service |
752078 |
state.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
<note><title>Example</title><para>
|
|
Packit Service |
752078 |
A user runs xmodmap. xmodmap registers with the SM,
|
|
Packit Service |
752078 |
sets <function>RestartStyleHint</function>
|
|
Packit Service |
752078 |
to <function>RestartAnyway</function> and then terminates. In
|
|
Packit Service |
752078 |
order to allow the SM (at the user's request) to undo this, xmodmap
|
|
Packit Service |
752078 |
would register a <function>ResignCommand</function> that undoes
|
|
Packit Service |
752078 |
the effects of the xmodmap.
|
|
Packit Service |
752078 |
</para></note>
|
|
Packit Service |
752078 |
</listitem>
|
|
Packit Service |
752078 |
</varlistentry>
|
|
Packit Service |
752078 |
<varlistentry>
|
|
Packit Service |
752078 |
<term>RestartStyleHint</term>
|
|
Packit Service |
752078 |
<listitem>
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
If the RestartStyleHint property is present, it will contain the style
|
|
Packit Service |
752078 |
of restarting the client prefers. If this flag isn't
|
|
Packit Service |
752078 |
specified, <function>RestartIfRunning</function> is assumed. The
|
|
Packit Service |
752078 |
possible values are as follows:
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<informaltable frame='topbot'>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<tgroup cols='2' align='left' colsep='0' rowsep='0'>
|
|
Packit Service |
752078 |
<colspec colname='c1' colwidth='1.0*'/>
|
|
Packit Service |
752078 |
<colspec colname='c2' colwidth='2.5*'/>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row rowsep='1'>
|
|
Packit Service |
752078 |
<entry>Name</entry>
|
|
Packit Service |
752078 |
<entry>Value</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>RestartIfRunning</entry>
|
|
Packit Service |
752078 |
<entry>0</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>RestartAnyway</entry>
|
|
Packit Service |
752078 |
<entry>1</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>RestartImmediately</entry>
|
|
Packit Service |
752078 |
<entry>2</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
<row>
|
|
Packit Service |
752078 |
<entry>RestartNever</entry>
|
|
Packit Service |
752078 |
<entry>3</entry>
|
|
Packit Service |
752078 |
</row>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</tgroup>
|
|
Packit Service |
752078 |
</informaltable>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
The <function>RestartIfRunning</function> style is used in the usual
|
|
Packit Service |
752078 |
case. The client should be restarted in the next session if it is
|
|
Packit Service |
752078 |
connected to the session manager at the end of the current session.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
The <function>RestartAnyway</function> style is used to tell the SM
|
|
Packit Service |
752078 |
that the application should be restarted in the next session even if
|
|
Packit Service |
752078 |
it exits before the current session is terminated. It should be noted
|
|
Packit Service |
752078 |
that this is only a hint and the SM will follow the policies specified
|
|
Packit Service |
752078 |
by its users in determining what applications to restart.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<note><title>Rationale</title><para>
|
|
Packit Service |
752078 |
This can be specified by a client which supports (as MS-Windows
|
|
Packit Service |
752078 |
clients do) a means for the user to indicate while exiting that
|
|
Packit Service |
752078 |
restarting is desired. It can also be used for clients that spawn
|
|
Packit Service |
752078 |
other clients and then go away, but which want to be restarted.
|
|
Packit Service |
752078 |
</para></note>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
A client that uses <function>RestartAnyway</function> should also set
|
|
Packit Service |
752078 |
the <function>ResignCommand</function> and <function>ShutdownCommand</function>
|
|
Packit Service |
752078 |
properties to commands that undo the state of the client after it exits.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
The <function>RestartImmediately</function> style is
|
|
Packit Service |
752078 |
like <function>RestartAnyway</function> but in addition, the client is
|
|
Packit Service |
752078 |
meant to run continuously. If the client exits, the SM should try to
|
|
Packit Service |
752078 |
restart it in the current session.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<note><title>Advice to Implementors</title><para>
|
|
Packit Service |
752078 |
It would be wise to sanity-check the frequency which
|
|
Packit Service |
752078 |
which <function>RestartImmediately</function> clients are restarted,
|
|
Packit Service |
752078 |
to avoid a sick client being restarted continuously.
|
|
Packit Service |
752078 |
</para></note>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
The <function>RestartNever</function> style specifies that the client
|
|
Packit Service |
752078 |
does not wish to be restarted in the next session.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
<note><title>Advice to Implementors</title> <para>
|
|
Packit Service |
752078 |
This should be used rarely, if at all. It will cause the client to be
|
|
Packit Service |
752078 |
silently left out of sessions when they are restarted and will
|
|
Packit Service |
752078 |
probably be confusing to users.
|
|
Packit Service |
752078 |
</para></note>
|
|
Packit Service |
752078 |
|
|
Packit Service |
752078 |
</listitem>
|
|
Packit Service |
752078 |
</varlistentry>
|
|
Packit Service |
752078 |
<varlistentry>
|
|
Packit Service |
752078 |
<term>ShutdownCommand</term>
|
|
Packit Service |
752078 |
<listitem>
|
|
Packit Service |
752078 |
<para>
|
|
Packit Service |
752078 |
This command is executed at shutdown time to clean up after a client
|
|
Packit Service |
752078 |
that is no longer running but retained its state by
|
|
Packit Service |
752078 |
setting <function>RestartStyleHint</function>
|
|
Packit Service |
752078 |
to <function>RestartAnyway</function> The command must not remove any
|
|
Packit Service |
752078 |
saved state as the client is still part of the session.
|
|
Packit Service |
752078 |
</para>
|
|
Packit Service |
752078 |
<note><title>Example</title><para>
|
|
Packit Service |
752078 |
A client is run at start up time that turns on a camera. This client
|
|
Packit Service |
752078 |
then exits. At session shutdown, the user wants the camera turned
|
|
Packit Service |
752078 |
off. This client would set the <function>RestartStyleHint</function>
|
|
Packit Service |
752078 |
to <function>RestartAnyway</function> and would register a
|
|
Packit Service |
752078 |
<function>ShutdownCommand</function> that would turn off the camera.
|
|
Packit Service |
752078 |
</para></note>
|
|
Packit Service |
752078 |
</listitem>
|
|
Packit Service |
752078 |
</varlistentry>
|
|
Packit Service |
752078 |
<varlistentry>
|
|
Packit Service |
752078 |
<term>UserID</term>
|
|
Packit Service |
752078 |
<listitem><para>
|
|
Packit Service |
752078 |
Specifies the user's ID. On POSIX-based systems
|
|
Packit Service |
752078 |
this will contain the the user's name (the <structfield>pw_name</structfield>
|
|
Packit Service |
752078 |
field of <structname>struct passwd</structname>).
|
|
Packit Service |
752078 |
</para></listitem>
|
|
Packit Service |
752078 |
</varlistentry>
|
|
Packit Service |
752078 |
</variablelist>
|
|
Packit Service |
752078 |
</chapter>
|
|
Packit Service |
752078 |
</book>
|