[Telepathy-commits] [telepathy-spec/master] ChannelDispatchOperation: refer to BypassApproval not HandleAdditionalChannels

Will Thompson will.thompson at collabora.co.uk
Mon Nov 24 07:14:06 PST 2008

 spec/Channel_Dispatch_Operation.xml |   31 ++++++++++++++-----------------
 1 files changed, 14 insertions(+), 17 deletions(-)

diff --git a/spec/Channel_Dispatch_Operation.xml b/spec/Channel_Dispatch_Operation.xml
index 5385aaa..7f61f6f 100644
--- a/spec/Channel_Dispatch_Operation.xml
+++ b/spec/Channel_Dispatch_Operation.xml
@@ -51,7 +51,11 @@
         each containing one channel.)</p>
       <p>First, the channel dispatcher SHOULD construct a list of all the
-        channel handlers that could handle all the channels, ordered by
+        <tp:dbus-ref
+          namespace="org.freedesktop.Telepathy.Client">Handler.DRAFT</tp:dbus-ref>s
+        that could handle all the channels (based on their <tp:dbus-ref
+          namespace="org.freedesktop.Telepathy.Client.Handler.DRAFT">HandlerChannelFilter</tp:dbus-ref>
+        property), ordered by
         priority in some implementation-dependent way. If there are handlers
         which could handle all the channels, one channel dispatch operation
         SHOULD be created for all the channels. If there are not, one channel
@@ -62,21 +66,14 @@
         channel handlers that are already handling channels from the same
-      <p>Processing of a channel dispatch operation proceeds as follows.
-        If the channels in a channel dispatch operation are in the same
-        bundle as a channel that is already being handled, and the handler
-        could also handle the channels being dispatched, the channel
-        dispatcher SHOULD call the handler's HandleAdditionalChannels
-        method to see whether the handler will accept the new channels too.
-        If the handler takes responsibility for the channels,
-        processing stops, and no approvers are run.</p>
-      <p>(FIXME: HandleAdditionalChannels is not defined!  Are all use cases
-        for it subsumed by <tp:dbus-ref
-          namespace="org.freedesktop.Telepathy.Client.Handler.DRAFT">BypassApproval</tp:dbus-ref>?)</p>
-      <p>(FIXME: this is far too subtle and everyone will get it wrong.
-        Open issue: how else do we address this use case?)</p>
+      <p>If a handler with <tp:dbus-ref
+          namespace="org.freedesktop.Telepathy.Client.Handler.DRAFT">BypassApproval</tp:dbus-ref>
+        <code>= True</code> could handle the channels in the dispatch
+        operation, then the channel dispatcher SHOULD call <tp:dbus-ref
+          namespace="org.freedesktop.Telepathy.Client.Handler.DRAFT">HandleChannels</tp:dbus-ref>
+        on that handler, and (assuming the call succeeds) emit
+        <tp:member-ref>Finished</tp:member-ref> and stop processing those
+        channels without involving any approvers.</p>
         <p>Some channel types can be picked up "quietly" by an existing
@@ -90,7 +87,7 @@
           and display the message.</p>
-      <p>If not, the channel dispatcher SHOULD send the channel dispatch
+      <p>Otherwise, the channel dispatcher SHOULD send the channel dispatch
         operation to all relevant approvers (in parallel) and wait for an
         approver to claim the channels or request that they are handled.

More information about the Telepathy-commits mailing list