On Thu, Feb 28, 2008 at 10:58 AM, Dave Cridland <[EMAIL PROTECTED]> wrote:
> No, not too old, as such. > > Let's call our strictly increasing sequence a modseq. Every time a > roster item gets pushed, the server includes the current value of the > modseq and increments the modseq. We'll call this the roster item's > modseq value. [...] > > And we're done. No need for remembering what the changes were, no > need to do insanely complicated things with diffs, versioning, etc. Clear, it seems working and it is simple, two nice features. One further optimization in cases when the roster changes very dynamically: make the retrieval of the whole roster optional when there are deleted items, so the the user can decide if and when get it (there no UI inconsistencies, since the presence of deleted items is not received and they seem offline) One possible problem we haven't considered yet: gateways. If I remember well many do a roster push of only the online contacts and the contacts aren't actually stored with the main roster (this may change in implementations, I've seen both approaches). This fact may be a problem while handling the modseq, since there are more than one possible entities that may change it. -- Fabio Forno, Ph.D. Bluendo srl http://www.bluendo.com jabber id: [EMAIL PROTECTED]
