On Mon, Feb 1, 2010 at 1:46 PM, Turner <[email protected]> wrote: > > But what are A' and B'? How are they different? It might be helpful > for me to work on an example. Let's say the server is trying to apply > the following operations to a document with content ABCD: > > A: insert(1, "CD") (insert "CD" at position 1) > B: delete(2, 1) (delete 1 character starting from position 2) > > Once the transformer has done its thing, it seems to me that A' should > be something like {insert(1, "CD"); delete(4, 1)}, and B' should be > the same. Or am I combining the work of the Transformer and Composer > together? Would A' = A = insert(1, "CD") and B' = delete(4,1), and the > composer then slap them together in the right order? I feel like I'm > probably missing something here. >
Your second interpretation is correct. A' - insert(1, "CD") <-- this could originally be two individual inserts composed into a single one by the client. B' - delete(4, 1) What this looks like on the server: v1 = ABCD v2 = v1 + A (or v1 + B if applied first) v3 = v2 + B' (or v2 + A' if B applied first) On client A: v2 = v1 + A (sends A to server) v3 = v2 + B' (gets B' as part of reply) On client B: v2 = v1 + B (sends B to server) v3 = v2 + A' (gets A' as part of reply) On client C: no edits; just asks for updates since v1 v2 = v1 + [A,B'] <-- here's an example where the Composer might be applied, to reduce the number of operations sent to the client (or, if B was applied first by the server, v1 + [B,A'] ) This is obviously a simplification. The server actually tracks the version number, and "last known version" is always part of the delta. Hopefully this makes things clearer. -- You received this message because you are subscribed to the Google Groups "Wave Protocol" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/wave-protocol?hl=en.
