[Home]IdleTimeProtocol

HomePage | RecentChanges | Preferences

Difference (from prior author revision) (major diff)

Changed: 3c3
currently partially implemented by ginsu; client side implemented by vtFugu
Currently implemented by damascus, partially by ginsu, and client side by vtFugu.

Changed: 34c34
* does not depend on timliness of server, since the notice.idle contains the absoute time, they can be sent at any point by the server when it realizes one is necisarry.
* does not depend on timliness of server, since the notice.idle contains the absoute time, they can be sent at any point by the server when it realizes one is necisarry.

Efficient Idle time reporting protocol

Currently implemented by damascus, partially by ginsu, and client side by vtFugu.

This protocol is meant to be backwards compatable with the current 'notice/presence' fragment.

The current notice/presence fragment is supplimented by new fragments status.presence and status.idle, the idea is that the textual part of your presence goes into status.presence and the idle time goes into status.idle. notice/presence should contain all information in a textual form so older clients can see all your pertinent presence information.

client algorithm: The basic idea is that when a client recieves a presence notification with a status.idle fragment it synchronizes its concept of how long the person has been idle with what that fragment says. a simple implementation would be to keep a list of users and the last time they were known to not be idle. when a notice.idle is recieved, set that last known active time to be the time contained in the notice. their idle time at any given point is the current time minus that stored time unless the stored time is zero (epoch) in which case they are not idle.

other client (server) algorithm: the server only needs to send status.idle fragments not when their idle time changes (since it is constantly changing, or growing at least even if they are not there) but rather when their last known active time changed (and it can do that lazily). a simple algorithm would be to periodically (every few minutes) check whether the users last known active time had changed, and if so resend a new presence notice to _gale.notice.<name>@<domain>. if their last known active time was less than a few minutes ago, send a status.idle (not idle) fragment if one has not been sent already.

a status.presence without a status.idle should be interpreted to mean the user does not wish to report idle time.

a client could consider any puff sent to be equivalent of an idle.time 0 presence notice, this will give an aproximation for people whose clients dont participate with the IdleTimeProtocol

the fragments

Benefits:


HomePage | RecentChanges | Preferences
This page is read-only | View other revisions
Last edited February 3, 2003 19:57 by AbeEgnor (diff)
Search: