[Telepathy-commits] [telepathy-spec/master] Add CM capability use-cases

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


20080609133652-53eee-423349c0813069c0a2cb4ba500cad694b6e8bd79.gz
---
 doc/cmcaps.txt |  149 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 149 insertions(+), 0 deletions(-)
 create mode 100644 doc/cmcaps.txt

diff --git a/doc/cmcaps.txt b/doc/cmcaps.txt
new file mode 100644
index 0000000..3cca23c
--- /dev/null
+++ b/doc/cmcaps.txt
@@ -0,0 +1,149 @@
+Use cases for connection manager capabilities
+=============================================
+
+.. contents::
+
+Connection manager capabilities indicate what sorts of channel a connection
+manager could conceivably satisfy a request for. This is closely related to
+`channel requesting`_, and can be used by clients to decide what UI to
+present.
+
+.. _channel requesting: request.html
+
+For instance, Empathy's Chat -> New Conversation menu can use this mechanism
+to decide what connection managers could conceivably have what features.
+
+Fundamentally, it is a Connection that has or lacks a particular feature.
+However, it would be useful for some part of Mission Control (account manager?
+channel dispatcher?) to cache "expected" capabilities for unconnected
+accounts, or perhaps even be able to guess what capabilities an account will
+have before it has ever become connected.
+
+The current proposal is:
+
+* "Classes" of requestable channel are identified by (ChannelType,
+  TargetHandleType) pairs
+
+* If TargetHandleType is not NONE then either TargetHandle or TargetID is
+  always mandatory, and TargetHandle (if given) is nonzero
+
+* If TargetHandleType is NONE then TargetHandle and TargetID are forbidden
+
+* Other parameters can be allowed, or not; clients SHOULD NOT send parameters
+  that aren't explicitly allowed
+
+Problems with this proposal:
+
+* How do we say that not all "valid" values for a parameter are allowed?
+  For instance we might only support a couple of MIME types for file transfer
+
+* Can other parameters can be mandatory? This turns out to be necessary
+  (or at least very useful) for File Transfer and Tubes
+
+Optional parameters which could hypothetically apply to all channels
+--------------------------------------------------------------------
+
+* ...Channel.Bundle
+* ...Channel.Interface.Thread.ThreadID
+* ...Channel.Interface.TLS.Secure
+
+1-1 text chat
+-------------
+
+:ChannelType:
+    ...Channel.Type.Text
+:TargetHandleType:
+    CONTACT
+:Mandatory parameters other than TargetHandle:
+    none
+:Optional parameters not already mentioned:
+    none
+
+Chatroom
+--------
+
+:ChannelType:
+    ...Channel.Type.Text
+:TargetHandleType:
+    ROOM
+:Mandatory parameters other than TargetHandle:
+    none
+:Optional parameters not already mentioned:
+    none
+
+1-1 VoIP
+--------
+
+:ChannelType:
+    ...Channel.Type.StreamedMedia
+:TargetHandleType:
+    NONE
+:Mandatory parameters other than TargetHandle:
+    none
+:Optional parameters not already mentioned:
+    none
+
+Mingle
+------
+
+:ChannelType:
+    ...Channel.Type.StreamedMedia
+:TargetHandleType:
+    ROOM
+:Mandatory parameters other than TargetHandle:
+    none
+:Optional parameters not already mentioned:
+    none
+
+RoomList
+--------
+
+:ChannelType:
+    ...Channel.Type.Text
+:TargetHandleType:
+    NONE
+:Mandatory parameters:
+    none
+:Optional parameters not already mentioned:
+    none
+
+FileTransfer
+------------
+
+:ChannelType:
+    ...Channel.Type.FileTransfer
+:TargetHandleType:
+    CONTACT
+:Mandatory parameters other than TargetHandle:
+    Varies per connection manager:
+
+    * SuggestedFilename: mandatory in XMPP XEP-0096 and probably others
+    * Size: mandatory in XMPP XEP-0096
+    * other protocols?
+
+:Optional parameters not already mentioned:
+    * Size (mandatory in XEP-0096, could be optional in other protocols?)
+    * RandomAccess=True? (XEP-0096 byte ranges)
+    * Description (XEP-0096)
+    * ContentType? (can always avoid making this mandatory by defaulting to
+      'application/octet-stream')
+    * ContentMD5
+    * Metadata? (extensible - not possible in all protocols)
+
+D-Bus, Stream, Packet Tube
+--------------------------
+
+:ChannelType:
+    ...Channel.Type.DBusTube, Ch.T.StreamTube, Ch.T.PacketTube?
+    (with ...Channel.Interface.Tube)
+:TargetHandleType:
+    CONTACT or ROOM
+:Mandatory parameters other than TargetHandle:
+    Service
+    SocketAddress (Stream/Packet only)
+    AccessControl (different between Stream/Packet and D-Bus)
+:Optional parameters not already mentioned:
+    TubeParameters (omitted and empty a{sv} are interchangeable)
+
+..
+  vim:set sw=4 sts=4 et:
-- 
1.5.6.5




More information about the Telepathy-commits mailing list