The local providers in the disksummary branch were rewritten a fair bit to accomodate the new Evolution/CamelDS.FolderSummary interfaces, since that does most of the work of managing a folder in the Evolution/Camel.Local backends.
This wasn't strictly required in all cases, but the changes allowed for some nicer algorithms to be implemented.
This will just list some of the differences of note.
Also note that content indexing using Evolution/Camel.Index is not implemented at all since it was removed in the Evolution/CamelDS.FolderSummary where it used to be done. It needs to be implemented at this level now.
The MBOX backend is based on a more robust design, the 'folder and summary mismatch even after sync' exception no longer exists, so it can no longer be thrown!
But also, the case whereby it came about is also no longer existant. The syncing process now does a check automatically. After a sync pass, the summary will match the folder will match the summary, always, no matter what external or forgotten changes have occured to the folder since it was created.
The sorted and iterative based summary simplified a lot of the algorithms for matching the summary and the folder.
Most of the work here was just to change the way the summary interacts with the folders - for much the better. Each summary item contains the filename extension separately as well, so they can easily be found if another client hasn't renamed them.
But while I was there I also fixed the filename generation to use some newer constructs which should result in a more robust naming scheme. The UID/filename format is now:
- sss: Seconds from the current time.
- uuu: Microseconds from the current time.
- ppp: Process id.
- nnn: Incrementing number for each message created in this session.
- hhh: Hostname of the server, with / and : escaped appropriately.
See this link for information.
Not much to be said - its still a shitty solution!
Although it no longer re-writes the message files to store Status flags, now they are only contained in the summary database, I think.