aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/info/mds.texinfo44
1 files changed, 41 insertions, 3 deletions
diff --git a/doc/info/mds.texinfo b/doc/info/mds.texinfo
index 2c89cd2..6da25d8 100644
--- a/doc/info/mds.texinfo
+++ b/doc/info/mds.texinfo
@@ -342,7 +342,10 @@ of crashing.
@cpindex Layers, architecture
@cpindex Architectural layers
@cpindex Kernel
+@cpindex Display server kernel
+@pgindex @command{mds}
@cpindex Master server
+@pgindex @command{mds-server}
The @command{mds} display server in architectured in
three layers. The first layer is called the kernel.
The kernel is responsible for acquiring a display
@@ -363,6 +366,7 @@ mission falls to the master server.
@cpindex Message passing, coordination
@cpindex Communication, coordination
@cpindex Interprocess communication, coordination
+@pgindex @command{mds-server}
The second layer is the master server. The master
server has two responsibilities: coordinating
message passing between other servers and clients
@@ -399,6 +403,7 @@ of the display server.
@cpindex Communication, mechanism
@cpindex Interprocess communication, mechanism
@cpindex Master server
+@pgindex @command{mds-server}
Intrinsic to @command{mds} is a powerful
interprocess communication mechanism. Servers
and clients connect to the display server by
@@ -424,6 +429,7 @@ Join or leave a multicast group.
@cpindex Assignment of ID
@cpindex Disconnection
@cpindex Master server
+@pgindex @command{mds-server}
Upon assignment of an ID the master server
will automatically place the client in a
multicast group for that specific client.
@@ -439,6 +445,7 @@ the client, refered to by it's ID, have closed.
@cpindex Interprocess communication, message structure
@cpindex Message structure, message passing
@cpindex Master server
+@pgindex @command{mds-server}
A message in the @command{mds} protocol is
comprised of two parts: headers and a payload.
When a client joins a multicast group it is
@@ -456,6 +463,7 @@ multicasted to groups indicated by its headers.
@cpindex Interprocess communication, message modification
@cpindex Message modification, message passing
@cpindex Master server
+@pgindex @command{mds-server}
@cpindex Multicast groups
The multicast groups and receiving of message
is called interceptions. The interesting
@@ -700,6 +708,8 @@ unavailable when running under @command{valgrind}.
@cpindex Interprocess communication, filesystem
@cpindex Filesystem
@cpindex Kernel
+@cpindex Display server kernel
+@pgindex @command{mds}
The @command{mds} kernel creates two directories
for the @command{mds} servers to use: one for
runtime data and one for temporary data.
@@ -756,6 +766,12 @@ its servers and clients.
@node Message Passing
@section Message Passing
+@cpindex Message passing, display
+@cpindex Communication, display
+@cpindex Interprocess communication, display
+@cpindex Kernel
+@cpindex Display server kernel
+@pgindex @command{mds}
Message passing over domain sockets is the
underlaying technique for communicating with
the display server. To communicate with the
@@ -764,6 +780,10 @@ must connect to the domain socket created by
the display server kernel as named in
@ref{Filesystem}.
+@cpindex Connecting to the display
+@cpindex Client ID assignment
+@cpindex ID assignment
+@cpindex Assignment of ID
Clients should request a unique ID when it
connects to the display server.@footnote{There
is seldom a reason for servers to do this.}
@@ -777,6 +797,9 @@ Message ID: 0\n
@end group
@end example
+@cpindex Message ID
+@cpindex Message corruption
+@cpindex Corrupt messages
where @code{\n} is an LF-line break.
The value on the @code{Message ID} line
does not need to be 0, but servers and
@@ -787,13 +810,17 @@ must contain this @code{Message ID} header,
otherwise the message is considered corrupt
and is ignored.
+@cpindex Message structure
+@cpindex Message passing, message structure
+@cpindex Communication, message structure
+@cpindex Interprocess communication, message structure
The empty line signifies the end of the
header list, and in this case the end of
the message. But a message may contain
payload beneath this empty line. To
include a payload, add the header
@code{Length} that says how many bytes
-the payload is comprised of.
+the payload is comprised.
A header must contain a header name and
header value without any trailing or
@@ -801,6 +828,11 @@ leading spaces, and `: ' (colon, one
regular blank space) exactly delimits
the name and the value.
+@cpindex Master server
+@pgindex @command{mds-server}
+@cpindex Client ID assignment
+@cpindex ID assignment
+@cpindex Assignment of ID
When the master server receives this
@code{Command: assign-id} message it
will assign the client a unique ID
@@ -827,6 +859,7 @@ In response to: 0\n
@end group
@end example
+@cpindex Message ID
Notice that the master server never
includes @code{Message ID} in message
originating from it.
@@ -837,12 +870,13 @@ a colon (`:'). Both of these integers
are unsigned 32-bit integers. This is
done this way because unsigned 64-bit
integers are forbidden because it is
-not supportable natively be some
+not supported natively be some
programming languages.
Before a client has gotten a unique client
ID assigned to it, it will be `0:0'.
+@cpindex Disconnection
If a client gets disconnected from the
master server, the master server will
sends out a signal header message.
@@ -868,6 +902,10 @@ Client closed: 0:0\n
@end group
@end example
+@cpindex Addressing message
+@cpindex Message passing, addressing
+@cpindex Communication, addressing
+@cpindex Interprocess communication, addressing
Once a client has an unique client ID
assigned to it, it should always include
the header @code{Client ID} in its
@@ -1688,6 +1726,7 @@ to starta process in a new process group.
@pgindex @command{mds}
@pgindex @command{mds-server}
@cpindex Kernel
+@cpindex Display server kernel
@cpindex Master server
An @command{mds} display server instance is comprised of
multiple small servers that each implements a small part
@@ -11501,7 +11540,6 @@ TODO application menu features:
TODO In `Rat Cursors` use anchors and references to hyperlink names.
TODO Indices:
- Protocol → Message Passing
Protocol → Interception
Protocols
Default Keyboard Layouts