On 15/04/2014 12:14:15, "Patrick Ohly" <[email protected]> wrote:


I suspect that running SyncEvolution as SyncML client is still more
common (and thus "normal") than running it as SyncML server. For the
sake of this discussion, "normal" sync is both, because it involves only
one sync config.

 OK, once more then:

So in a 'normal sync', which I understand to be a sync between any given syncml server and SE acting as a syncml client, only needs (minimally):

one or more data source, which is a full specification of a database (kind: events, memos..., storage engine=backend+format, location: database) to be synceda sync config, which in this case would point to the remote syncml server, with minimally the username, password and syncURL (pointing to the syncml server) In such a case, SE in the role as a syncml client knows by the Xmn entries associated through the sync config what sources it should offer (what would happen if 2 'contacts' sources were offered?), and which way the sync would go (two-way or one-way; is one-way a push?). SE as a client initiates the sync.

EAS and WebDAV are not considered sync engine technologies within the scope of SE, but data storage engines. While it would be in principle possible to set up a pair of server-based backends, for simplicity and debuggability, we set up a hub-and-spoke system with the hub a simple backend such as the 'file' or 'eds' backends. The hub will be SE as a syncml client as described above. The syncml client role uses the syncURL local://@context to point out that it wants to connect to the target-config in @context instead of a real syncml server.

The target-config specifies a faux syncml server, which (conceptually) awaits the incoming connection. This incoming server must know what data stores it has available; this is registered in its Xmn entries, which point to data sources in its own context. The target-config+associated source entries have the full specification to access the data stores; in the case of a server-based store, this means that either the username and password set in the target-config must be applicable to all the data sources it is associated with, or the data source must itself provide the correct username/password.

The SyncML client chooses which sources it wants to sync with. This is what SyncEvolution as SyncML client does via the "uri" property, stored in the Xmn entry that ties together the client side with the target-config; the uri property points to a data source inside the context that the target-config lives in. The data source pointed to in the Xmn entry must match the kind of the data source pointed to by uri@target-config-context.

After setting up, for example:

"client": context=C1, source=S1a of type 'contacts', S1b of type 'events', sync-config=SC1 with syncURL pointing to local://@C2, with Xmn source=S1a+uri=S2a<@C2 implied>, source=S1b+uri=S2b<@C2 implied>

"server": context=C2, source=S2a of type contacts, S2b of type events, sync-config=target-config with an irrelevant syncURL

I could --sync SC1@C1, and this would cause S1a and S2a to be synced, and S1b and S2b to be synced

Emile
_______________________________________________
SyncEvolution mailing list
[email protected]
https://lists.syncevolution.org/mailman/listinfo/syncevolution

Reply via email to