On 02/07/15 12:32, Aleksander Machniak wrote: > Now I'm curious how Outlook/Mapistore detects changes in the storage, > i.e. new mail, flag changes, etc. I suppose it checks some folder > properties like PidTagLastModificationTime or some other > time/checksum/count props. Implementing some of them is not simple when > we're talking about IMAP storage. > > So, could you give me some more info on this and the list of required > properties? >
This topic is quite tricky. The semantics widely change depending if you are running Outlook in online mode or in cached mode. In online mode, it is mainly a client-side behavior which is likely to change between Outlook versions. It is therefore not an exact science, but we have found with experience some constants which are generally enough to keep every Outlook version up and running properly. 1. timestamps properties such as PidTagLastModificationTime 2. counters such as PidTagContentCount or PidTagContentUnreadCount 3. RowCount value in GetHierarchyTable and GetContentsTable (computed at mapistore layer) In offline mode, the server and the clients agrees on contents/hierarchy to be synchronized and related options during the SynchronizationConfigure call, then exchange synchronization states through metatags properties to agree on data to be retrieved. However this MAPI internal behavior should be completely opaque to backends. On top of my head, you will have to maintain few additional properties for each objects such as PidTagChangeNumber or PidTagChangeKey for this process to work properly. PidTagChangeNumber is generally used when you want to query what has changed since a given revision. There is definitely more, but as for now I hope it already gives you a sense of what to expect. Newmail is a complete separate topic on its own if we refer to scenarios where the user receives the email while being connected or if the user receives the email while being offline and synchronize afterwards. In the former case, the asynchronous notification mechanism is involved while in the later, the default offline algorithm is involved. Julien. -- Julien Kerihuel j.kerih...@openchange.org OpenChange Project Founder Twitter: http://twitter.com/jkerihuel GPG Fingerprint: 0B55 783D A781 6329 108A B609 7EF6 FE11 A35F 1F79
signature.asc
Description: OpenPGP digital signature
_______________________________________________ devel mailing list devel@lists.openchange.org http://mailman.openchange.org/listinfo/devel