Node:What do I have unread, Up:Common Commands
Each person has a membership list containing the conferences the person is a member of. Each element is an object of type Membership. Among other things it contains the number of the conference, the priority of the membership, when the person most recently marked a text as read in the conference, and which texts the person has read.
The list of read texts consists of two parts: a local text number called
last-text-read
and a list of local text numbers called
read-texts
. The person has marked all texts up to and including
last-text-read
as read, and also the texts listed in
read-texts
. All other texts in the conference are unread. Clients
can use either the query-read-texts
or
get-membership
calls to get membership data.
The standard procedure for finding out which texts are unread is the following:
get-unread-confs
for the person.
This returns a list of conferences in which the person may have unread
texts. This call may return conferences that do not contain any unread
texts, but it will never forget to return a conference that does contain
an unread text.
query-read-texts
for each conference returned in
the previous step. This will return the membership data for all the
conferences that may contain unread texts.
get-uconf-stat
for each conference returned in
the first step. The conference status will be needed shortly. Repeat the
following steps for each conference.
last-text-read
field for the
corresponding membership. If the highest existing local text is higher
than last-text-read
, the conference may contain unread texts.
last-text-read
and ending at the highest existing local
number. Every local number in the map that is not read according to the
membership data and that has a mapping to a global number is an unread
text. You might say that you remove the read texts from the map to get
the unread texts.
Take care not to call get-map or get-membership too much since they tend
to be expensive operations. Use get-unread-confs
and
query-read-texts
to minimize the work. Another point to remember
is that the server will send asynchronous messages with information
about new texts. Clients need to listen to these messages.