Commit 1c1f5fd0 authored by Per Cederqvist's avatar Per Cederqvist
Browse files

(Person Status Types): Added missing closing parenthesis.

(Who Information): Ditto.
(Membership Information): Added the Text-Id type.
(modify-system-info): Fixed references to argument names in the
	error code descriptions.
(async-text-read): New async message.
(async-invalidate-text-read): New async message.
(Aux-Item Types): Don't use @field for anything but Protocol A
	structure fields.  State that allowed-content-type should be
	applied recursively to all content types.
parent ecc52d34
......@@ -2276,7 +2276,7 @@ The identity of the user from which the person most recently
connected, currently
@samp{@t{remote-user}(@t{ident-user})@@@t{remote-host}}. @t{remote-user}
is the string sent during the initial handshake (@pxref{Connecting to
the Server}; @t{ident-user} is the user identy derived from the IDENT
the Server}); @t{ident-user} is the user identy derived from the IDENT
protocol; @t{remote-host} is the name or address of the connecting
host. Note that ident-user may be missing (including the surrounding
parentheses) or set to an arbitrary string.
......@@ -2526,6 +2526,19 @@ zero) if the person requesting the membership has insufficient
privileges to see the contents membership, but has sufficient privileges
to know about the person.
@tindex Text-Id
@example
@anchor{Text-Id}
Text-Id ::=
( conf-no : @lt{Conf-No};
local-no : @lt{Local-Text-No};
)
@end example
The @type{Text-Id} structure identifies a text using a conference
number and a local text number within that conference. It is used by
@asynclink{async-text-read}.
@node Article Marks
@section Article Marks
......@@ -2731,7 +2744,7 @@ The identity of the user from which the session is connected,
currently
@samp{@t{remote-user}(@t{ident-user})@@@t{remote-host}}. @t{remote-user}
is the string sent during the initial handshake (@pxref{Connecting to
the Server}; @t{ident-user} is the user identy derived from the IDENT
the Server}); @t{ident-user} is the user identy derived from the IDENT
protocol; @t{remote-host} is the name or address of the connecting
host. Note that ident-user may be missing (including the surrounding
parentheses) or set to an arbitrary string.
......@@ -7579,9 +7592,9 @@ Admin bit not set or privileges not enabled.
@item illegal-aux-item
Attempt to create an invalid aux item.
@item aux-item-permission
No permission to delete one or more of the items in @rarg{delete}, or
@rarg{delete} indicates a non-existent aux-item, or not enough
permissions to add one or more of the items in @rarg{add}.
No permission to delete one or more of the items in @rarg{items-to-delete}, or
@rarg{items-to-delete} indicates a non-existent aux-item, or not enough
permissions to add one or more of the items in @rarg{items-to-add}.
@end table
......@@ -8944,6 +8957,8 @@ reject them if a client uses it as an argument to
* async-new-presentation:: r A presentation was changed (20)
* async-new-motd:: r A motd was changed (21)
* async-text-aux-changed:: r The aux-item list of a text was changed (22)
* async-text-read:: e A text was read in another session (23)
* async-invalidate-text-read:: e Recompute what is unread at a later time (24)
@end menu
@ifnottex
......@@ -9353,6 +9368,64 @@ Please note that all items in @aarg{deleted} will have the
@node async-text-read
@section async-text-read [23] (12) Experimental
@amindex async-text-read
@example
async-text-read [23] ( read : @lt{ARRAY} @lt{Text-Id} );
@end example
This message indicates that the currently logged on person has marked
texts as read as specified by @aarg{read} in another session. (This
message is not sent to the session that marks a text as read.)
Clients that listen for this message should also listen for
@asynclink{async-invalidate-text-read}. See that description for more
information on how they interact.
@node async-invalidate-text-read
@section async-invalidate-text-read [24] (12) Experimental
@amindex async-invalidate-text-read
@example
async-invalidate-text-read [24] ( conf-no : @lt{Conf-No} );
@end example
This message indicates that the currently logged on person changed
which texts that are marked as read in the @aarg{conf-no} conference in
another session. (This message is not send to the session that
performs the modification.)
A client that receives this async message should make a note that it
no longer can trust its locally cached information about what is
unread. However, it should not immediately recompute what is unread,
unless the user is interactively using the client. Instead, it should
wait a while. This will help reducing the burden on the server. How
long the client should wait is a topic for future research. To wait a
time that is proportional to how long the user has been idle might be
a good heuristic.
Clients that listen for this message should also listen for
@asynclink{async-text-read}. The server is free to choose when to use
@async{async-invalidate-text-read} and @async{async-text-read}. It
should attempt to use a heuristic that minimizes the work it needs to
perform and the network traffic.
The server can know a lot about what the client knows. For instance,
if the client has performed a @reqlink{query-read-texts} request for a
certain conference, it knows something about what is unread in that
conference. If the server later sends an
@async{async-invalidate-text-read} asynchronous message, it knows that
the client knows nothing. Until the client issues a new
@req{query-read-texts} request (or any other request that informs it
about what is unread in the conference) there is no need for the
server to send more @async{async-invalidate-text-read} or
@async{async-text-read} messages about that conference. If the server
actually performs this kind of optimizations is an implementation
detail.
@node Error Codes
@chapter Error Codes
......@@ -9649,8 +9722,8 @@ can expect that the definitions of these items will not change unless
explicitly stated.
Each listing is of the form @samp{name [tag] (types)},
where @field{name} is the name of the aux-item, @field{tag} is
the aux-item tag and @field{types} is a comma-separated list of object
where @samp{name} is the name of the aux-item, @samp{tag} is
the aux-item tag and @samp{types} is a comma-separated list of object
types the aux-item may be attached to. The possible types are:
@table @code
......@@ -10029,6 +10102,11 @@ priority numbers, it is a hint to the client about which content-type is
most desirable. Content-types that matches a lower priority number are
preferred.
Some content types (such as @samp{multipart/mixed} and
@samp{message/rfc822}) can contain other content types. In those
cases, all content types should be checked against the
@aux{allowed-content-type}.
As an example, consider a conference with the following four
@aux{allowed-content-type} aux-items:
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment