On Wed, 2009-09-23 at 11:21 +0100, Lukas Zeller wrote:
> On Sep 23, 2009, at 11:31 , Patrick Ohly wrote:
> 
> > In the SyncEvolution GUI we wanted to implement an indicator whether a
> > certain datastore is done already while the sync itself continues.  
> > This
> > would be useful as feedback to the user when he has to decide  
> > whether he
> > can abort.
> >
> > "done" in the SyncML context would be "all data exchanged, mapping  
> > sent,
> > client and server agree that anchors for the datastore can be  
> > updated".
> > I'm no longer sure whether the protocol actually allows the last step
> > unless also the whole session completes.
> 
> No, IMHO the anchors may only be saved if the session completes (which  
> does not mean that all datastore syncs must complete *sucessfully*,  
> but all the SyncML protocol phases must complete correctly. Our  
> current implementation, both client and server side are doing it this  
> way, i.e. detecting that the session now has ended and then calling  
> engFinishDataStoreSync() for all datastores.

Yeah, I suspected that much.

> > If it doesn't, then we have to drop the concept of an datastore  
> > which is
> > completed early [...]
> 
> I would not drop it - because this is a protocol detail that even  
> might change with future SyncML versions (who knows..).

Correct.

> Especially because the current progress event mechanism already has  
> what you are asking: PEV_SYNCEND is what you are looking for - this is  
> a per-datastore event signalling that the sync with this datastore has  
> ended.

I misread the comments in engine_defs.h and associated that event with
the whole session, not individual datastores. Perfect, this is what I
was looking for.

> > [...] except for one special case: if a datastore isn't part
> > of the sync session at all, then it would be nice to tell the GUI  
> > that.
> > We can do that in SyncEvolution without Synthesis extensions, but it
> > would be more consistent if we had a PEV_DSDONE and/or PEV_DSDISABLED.
> 
> Technically, a datastore that is not used in a sync does not even  
> exist in the engine (no TSyncDatastore object instantiated), so from  
> an engine perspective it's not entirely consistent to implement  
> something saying "hey, I'm telling you that I don't even exist...".

Correct. That information for the GUI would have to be generated by the
layer above the Synthesis engine, the one which disabled the store. I
was only looking for a way to express this in terms of Synthesis
progress events (because that is part of our UI interface), not for a
way to get it issues by the engine.

> > If you don't like these defines in engine_defs.h, can we add at  
> > least a
> > PEV_CUSTOM_START = 128, PEV_CUSTOM_END = 255 range in it that is
> > declared for use outside of the core engine?
> 
> I think that's a good idea anyway, please add it!

Okay, I will.


-- 
Best Regards, Patrick Ohly

The content of this message is my personal opinion only and although
I am an employee of Intel, the statements I make here in no way
represent Intel's position on the issue, nor am I authorized to speak
on behalf of Intel on this matter.



_______________________________________________
os-libsynthesis mailing list
[email protected]
http://lists.synthesis.ch/mailman/listinfo/os-libsynthesis

Reply via email to