[Telepathy-commits] [telepathy-spec/master] Expand on req3 a bit; simplify by requiring collaborative apps to have some idea what they're already handling

Simon McVittie simon.mcvittie at collabora.co.uk
Fri Sep 26 08:20:41 PDT 2008


20080609113409-53eee-1e9a33a1e3866778f2ecaf3f88d03434d953a9b2.gz
---
 doc/request.txt |   29 ++++++++++++++++++++++++-----
 1 files changed, 24 insertions(+), 5 deletions(-)

diff --git a/doc/request.txt b/doc/request.txt
index 8cf2df7..a9d0681 100644
--- a/doc/request.txt
+++ b/doc/request.txt
@@ -121,16 +121,29 @@ Romeo is collaborating on a document with Mercutio, and wants to have a chat
 embedded in his AbiWord instance, separate from any other chat with Mercutio
 that may be ongoing.
 
+:New vs. existing:
+    New channel required [#]_
+:Definition of channel identity:
+    ChannelType is Text, TargetHandleType is CONTACT, TargetHandle is
+    mercutio, Bundle is the same as the AbiWord Tube channel
+
+.. [#] If the collaborative app already has a suitable channel, it is expected
+    to work this out without the channel dispatcher's help.
+    Stealing a channel from another UI is likely to fail (e.g. in the Text
+    interface, they'll both try to acknowledge messages) so we should
+    probably forbid this for sanity's sake?
+
 Current implementation: impossible, even in protocols supporting
 conversation threads, because the spec can't represent them
 
-Proposed implementation::
+Proposed implementation, assuming AbiWord does not have a Text channel yet::
 
     bundle_id = ...Bundle property of AbiWord Tube channel
 
     client calls some unspecified method on ChannelDispatcher (FIXME)
 
-    ChannelDispatcher calls RequestChannels (PREFER_REUSE | SUPPRESS_HANDLER,
+    ChannelDispatcher calls RequestChannels (
+        SUPPRESS_HANDLER,
         [
             {'...ChannelType': '...Text',
              '...TargetHandleType': CONTACT,
@@ -143,11 +156,17 @@ Proposed implementation::
     channel approvers/handler do not run
     ChannelDispatcher returns channel to AbiWord
 
-    if channel has the requested bundle ID:
+    if channel has the EXISTING flag:
+        AbiWord displays error, e.g. "Already talking to Mercutio in another
+            app, and multiple threads are not possible in this protocol"
+    else if channel has the requested bundle ID:
         AbiWord uses it
     else:
-        AbiWord ignores it (on the basis that someone else is already using
-        it)? FIXME: is this always true?
+        FIXME: what would this even mean? Can we safely forbid this?
+
+Issues:
+
+* Should the CM be allowed to return "the wrong" bundle ID? Probably not
 
 _`req26`: Recovering from disconnection
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- 
1.5.6.5




More information about the Telepathy-commits mailing list