|
From: deloptes <del...@ya...> - 2011-12-02 00:18:57
|
Hi, it took some time to get to the point where I can propose something meaningful, but I think I have now overall picture of how it can be done. Lukas Zeller wrote: > Hello, > > On Oct 24, 2011, at 23:14 , Chris Frey wrote: [...] > I'm not familiar with Opensync, but I wrote most of libsynthesis. Indeed, > libsynthesis is a SyncML engine which has two APIs: > > - one to use the library in an application to provide SyncML sync (client > or server) - another for datastore backend plugins, which are *called* by > the engine to read/write/delete data. > > So the question is if this can fit into the Opensync picture somehow. As > libsynthesis was not designed to be integrated as a subsystem of an > overall sync architecture as Opensync, it might be difficult. > I think it fits better then we suspect, if I understood correctly what I read. 1) In OpenSync's plugin you have the main sync and the data sync(s). The main sync will represent the UI API and the latter the datastore API. The calls can be handled either by the opensync plugin or passed to the engine and vice versa (depends what we want to achieve). This means A)the opensync plugin will drive the engine in the main sync and provide the transport etc. B) The data syncs will cover the data store work (and will act as DB plugins to the synthesis and object types to the opensync engine - i.e. contacts, events and so on). 2) Respective DevInf will be used/generated after or during both sides are getting discovered/configured. 3) If it is necessary for the synthesis engine to lead the sync, we can do this against the opensync database as Chris suggested, and we will mark the entries to know in which state they are (there is a mechanism in opensync to do so). I need to check again the opensync stuff on how it can be done in detail and I need some help in modelling the classes, as some of this goes above my knowledge. However the akonadi-plugin design is a very good example on how it can be done ... except that we can ask akonadi and in this case it looks like the synthesis engine will talk to and ask us. So I'm thinking in this latter case we need to see how the flow will be in details ... smth like a functional and/or sequence diagram in UML ... would be great. regards |