From: Armin B. <arm...@de...> - 2005-07-18 21:53:05
|
Patrick Ohly wrote: > On Tue, 2005-07-12 at 11:20 +0200, Armin Bauer wrote: > >>Helge Hess wrote: >> >>>Is this library suitable for server side implementations as well or is >>>it focused on clients? >>> >> >>The library consists of several layers. > > [..] > >>so the library will be usable as both server and client by using >>different parts of the library > > > Will it support both slow and fast synchronization? I had considered > implementing SyncML client support for Opie a while ago, but the Opie > PIM API would not support keeping track of local changes, so each > synchronization would have to be done via slow sync and for that the > server needs to detect changes. yes libsyncml supports slow-sync. This is requirement by the syncml protocol and the library fully implements this > > This is not listed in your list above; on the other hand, I am not sure > whether this wouldn't belong into the SyncML server on top of the > library layers. In that case let me rephrase my question: will OpenSync > on top of libsyncml support a slow sync of contact and calender entries? > definetly. opensync has a part that is called "Hashtables". It basically works like this: you go through all data you have and create a hash of it (this can either be a hash like the md5 or timestamps or whatever you can come up with that changes when the object is changed) then you call the hashtable with the uid and the hash of the object. opensync then compares the hash against the old stored hash. - if the uid is not in the hashtable the object is new - if the uid is in the table, but the hash dont match, the object was changed - if the uid is in the table and the hash is the same the object was not changed - afterwards you go through all uids that were not reported in the table. These objects are deleted Fortunately, opensync abstracts all this for you :) You can see a implementation of this with the file-sync plugin where this is used to see which files were changed since the last sync. you can see it here: http://www.opensync.org/file/plugins/file-sync/src/file_sync.c > Regarding the Opie SyncML client, your libsyncml is one option. > The other, older (more mature?) option is the C++ Sync4j client > library (www.sync4j.org). I have not actually used that lib > because my initial attempts of just syncing my Sony Ericcson K750 > with the Sync4j server failed: > http://forge.objectweb.org/tracker/index.php?func=detail&aid=303703&group_id=96&atid=100096 > the main problem is see with sync4j is that it uses java which makes it a lot less usable for the open source community in my opinion. so my approach is to write it in a low level language and the provide high level wrappers so that it is usable from python or java. > That has dampened my enthusiasm a bit, especially because none > of the Sync4j developers has reacted. I hope OpenSync and libsyncml > will fare better; please, continue your effort and actually release > something that works, it is appreciated ;-) > |