[Telepathy-commits] [telepathy-spec/master] Client: remove HandledChannelClasses in favour of putting it in the Observer etc. namespace. Explain .client files and client discovery
Simon McVittie
simon.mcvittie at collabora.co.uk
Fri Sep 26 08:21:22 PDT 2008
20080624145645-53eee-f62d75203e66d23051d433be50d84335aa76f793.gz
---
spec/Client.xml | 63 +++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 43 insertions(+), 20 deletions(-)
diff --git a/spec/Client.xml b/spec/Client.xml
index 72a5df4..5be5ced 100644
--- a/spec/Client.xml
+++ b/spec/Client.xml
@@ -21,6 +21,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
</tp:license>
<interface name="org.freedesktop.Telepathy.Client.DRAFT"
tp:causes-havoc="experimental">
+
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
<p>Telepathy clients use connection managers, the channel dispatcher
and optionally the account manager to provide useful
@@ -31,33 +32,55 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
address-book synchronization.</p>
<p>Every running or activatable process with a well-known
- name of the form org.freedesktop.Telepathy.Client.something should be
- probed by the channel dispatcher to discover its capabilities. Each
- client is either an <em>observer</em>, an <em>approver</em>, a
- <em>channel handler</em>, or some combination of these.</p>
+ name of the form org.freedesktop.Telepathy.Client.<em>clientname</em>
+ should be probed by the channel dispatcher to discover its
+ capabilities. Each client is either an <em>observer</em>, an
+ <em>approver</em>, a <em>channel handler</em>, or some combination
+ of these.</p>
+
+ <p>The client name, <em>clientname</em>, MUST be a non-empty string of
+ ASCII digits, letters and/or underscores, starting with a letter.</p>
+
+ <p>Each Client MUST export an object whose object path may be
+ determined by replacing '.' with '/' in the well-known name and
+ prepending '/'. This object represents its API as a Telepathy
+ client; the channel dispatcher will call its methods and read
+ its properties when appropriate.</p>
+
+ <p>As an optimization, clients MAY install a file
+ <a href="http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html">$XDG_DATA_DIRS</a>/telepathy/clients/<em>clientname</em>.client
+ containing a cached version of its immutable properties,
+ so that for most clients, the channel dispatcher can
+ just read a file to discover capabilities, instead of
+ having to service-activate the client immediately in order to fetch
+ its read-only properties. However, the D-Bus API is canonical, and
+ the channel dispatcher MUST support clients without such a file.</p>
+
+ <p>The .client files MUST contain UTF-8 text with the same syntax
+ as
+ <a href="http://standards.freedesktop.org/desktop-entry-spec/latest/">Desktop
+ Entry files</a> (although the allowed groups, keys and values differ).
+ Every .client file MUST contain a group whose name is the name
+ of this interface.</p>
- <p>As an optimization, we intend to introduce a .client file (similar to
- .manager files) so that for most clients, the channel dispatcher can
- just read a file instead of service-activating the client straight
- away.</p>
+ <p>The groups, keys and values in the .client file are defined by
+ individual interfaces.</p>
</tp:docstring>
<property name="Interfaces" type="as" access="read"
tp:type="DBus_Interface[]">
- <tp:docstring>
- A list of the extra interfaces provided by this client.
- This SHOULD include at least one of Client.Approver,
- Client.Observer or Client.ChannelHandler.
- </tp:docstring>
- </property>
-
- <property name="HandledChannelClasses" access="read" type="a(su)">
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
- </tp:docstring>
+ <p>A list of the extra interfaces provided by this client.
+ This SHOULD include at least one of ...Client.Approver,
+ ...Client.Observer or ...Client.ChannelHandler.</p>
- <!-- FIXME: invent and document a tp:type when it's clearer what we
- need. This is conjectured to be an array of (channel type, handle type)
- for now, hence a(su) -->
+ <p>In the .client file, this is represented by key "interfaces"
+ in the group named after this interface. The value of the key
+ is a list of interface names each followed by a semicolon (so
+ it always ends with a semicolon unless it is empty), i.e. a key
+ of type "strings" as described in the Desktop Entry
+ specification.</p>
+ </tp:docstring>
</property>
</interface>
--
1.5.6.5
More information about the Telepathy-commits
mailing list