diff options
author | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2009-02-17 10:50:15 +0000 |
---|---|---|
committer | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2009-02-17 10:50:15 +0000 |
commit | 137997b63993821967a0fe46819766677be48c72 (patch) | |
tree | 38ae4d88225cff222bf1086bd874033309c69109 /spec | |
parent | 901f7bb88393296572faffc791bb8876644e6143 (diff) |
Upgrade to spec 0.17.19
Diffstat (limited to 'spec')
-rw-r--r-- | spec/Channel_Interface_Group.xml | 143 | ||||
-rw-r--r-- | spec/Channel_Interface_Media_Signalling.xml | 46 | ||||
-rw-r--r-- | spec/Channel_Interface_Media_Signalling_Future.xml | 189 | ||||
-rw-r--r-- | spec/Channel_Interface_Tube.xml | 6 | ||||
-rw-r--r-- | spec/Channel_Type_DBus_Tube.xml | 2 | ||||
-rw-r--r-- | spec/Channel_Type_File_Transfer.xml | 2 | ||||
-rw-r--r-- | spec/Channel_Type_Streamed_Media.xml | 12 | ||||
-rw-r--r-- | spec/Channel_Type_Streamed_Media_Future.xml | 166 | ||||
-rw-r--r-- | spec/Connection.xml | 260 | ||||
-rw-r--r-- | spec/Connection_Interface_Contact_Info.xml | 2 | ||||
-rw-r--r-- | spec/Connection_Interface_Location.xml | 2 | ||||
-rw-r--r-- | spec/Connection_Interface_Requests.xml | 18 | ||||
-rw-r--r-- | spec/all.xml | 4 | ||||
-rw-r--r-- | spec/errors.xml | 223 |
14 files changed, 996 insertions, 79 deletions
diff --git a/spec/Channel_Interface_Group.xml b/spec/Channel_Interface_Group.xml index 019e848..490258f 100644 --- a/spec/Channel_Interface_Group.xml +++ b/spec/Channel_Interface_Group.xml @@ -572,29 +572,81 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ </tp:docstring> </tp:enumvalue> <tp:enumvalue suffix="Offline" value="1"> - <tp:docstring> - The change is due to a user going offline. Also used when - user is already offline, but this wasn't known previously. + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>The change is due to a user going offline. Also used when + user is already offline, but this wasn't known previously.</p> + + <p>If a one-to-one <tp:dbus-ref + namespace="org.freedesktop.Telepathy.Channel.Type">StreamedMedia</tp:dbus-ref> + call fails because the contact being called is offline, the + connection manager SHOULD indicate this by removing both the + <tp:member-ref>SelfHandle</tp:member-ref> and the other contact's + handle from the Group interface with reason Offline.</p> + + <tp:rationale> + For 1-1 calls, the call terminates as a result of removing the + remote contact, so the SelfHandle should be removed at the same + time as the remote contact and for the same reason. + </tp:rationale> + + <p>If a handle is removed from a group for this reason, the + equivalent D-Bus error is + <code>org.freedesktop.Telepathy.Error.Offline</code>.</p> </tp:docstring> </tp:enumvalue> <tp:enumvalue suffix="Kicked" value="2"> - <tp:docstring> - The change is due to a kick operation. + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>The change is due to a kick operation.</p> + + <p>If the <tp:member-ref>SelfHandle</tp:member-ref> is removed + from a group for this reason, the equivalent D-Bus error is + <code>org.freedesktop.Telepathy.Error.Channel.Kicked</code>. + </p> </tp:docstring> </tp:enumvalue> <tp:enumvalue suffix="Busy" value="3"> - <tp:docstring> - The change is due to a busy indication. + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>The change is due to a busy indication.</p> + + <p>If a one-to-one <tp:dbus-ref + namespace="org.freedesktop.Telepathy.Channel.Type">StreamedMedia</tp:dbus-ref> + call fails because the contact being called is busy, the + connection manager SHOULD indicate this by removing both the + <tp:member-ref>SelfHandle</tp:member-ref> and the other contact's + handle from the Group interface with reason Busy.</p> + + <tp:rationale> + For 1-1 calls, the call terminates as a result of removing the + remote contact, so the SelfHandle should be removed at the same + time as the remote contact and for the same reason. + </tp:rationale> + + <p>If the <tp:member-ref>SelfHandle</tp:member-ref> is removed + from a group for this reason, the equivalent D-Bus error is + <code>org.freedesktop.Telepathy.Error.Busy</code>. + </p> </tp:docstring> </tp:enumvalue> <tp:enumvalue suffix="Invited" value="4"> <tp:docstring> - The change is due to an invitation. + The change is due to an invitation. This reason SHOULD only be used + when contacts are added to the remote-pending set (to indicate that + the contact has been invited) or to the members (to indicate that + the contact has accepted the invitation). + + <tp:rationale> + Otherwise, what would it mean? + </tp:rationale> </tp:docstring> </tp:enumvalue> <tp:enumvalue suffix="Banned" value="5"> - <tp:docstring> - The change is due to a kick+ban operation. + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>The change is due to a kick+ban operation.</p> + + <p>If the <tp:member-ref>SelfHandle</tp:member-ref> is removed + from a group for this reason, the equivalent D-Bus error is + <code>org.freedesktop.Telepathy.Error.Channel.Banned</code>. + </p> </tp:docstring> </tp:enumvalue> <tp:enumvalue suffix="Error" value="6"> @@ -603,18 +655,53 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ </tp:docstring> </tp:enumvalue> <tp:enumvalue suffix="Invalid_Contact" value="7"> - <tp:docstring> - The change is because the requested contact does not exist. + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>The change is because the requested contact does not exist.</p> + + <p>For instance, if the user invites a nonexistent contact to a + chatroom or attempts to call a nonexistent contact, this could + be indicated by the CM adding that contact's handle to + remote-pending for reason None or Invited, then removing it for + reason Invalid_Contact. In the case of a 1-1 StreamedMedia + call, the CM SHOULD remove the self handle from the Group + in the same signal.</p> + + <tp:rationale> + For 1-1 calls, the call terminates as a result of removing the + remote contact, so the SelfHandle should be removed at the same + time as the remote contact and for the same reason. + </tp:rationale> + + <p>If a contact is removed from a group for this reason, the + equivalent D-Bus error is + <code>org.freedesktop.Telepathy.Error.DoesNotExist</code>. + </p> </tp:docstring> </tp:enumvalue> <tp:enumvalue suffix="No_Answer" value="8"> - <tp:docstring> - The change is because the requested contact did not respond. + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>The change is because the requested contact did not respond.</p> + + <p>If a one-to-one <tp:dbus-ref + namespace="org.freedesktop.Telepathy.Channel.Type">StreamedMedia</tp:dbus-ref> + call fails because the contact being called did not respond, the + connection manager SHOULD indicate this by removing both the + <tp:member-ref>SelfHandle</tp:member-ref> and the other contact's + handle from the Group interface with reason No_Answer.</p> + + <tp:rationale> + Documenting existing practice. + </tp:rationale> + + <p>If a contact is removed from a group for this reason, the + equivalent D-Bus error is + <code>org.freedesktop.Telepathy.Error.NoAnswer</code>. + </p> </tp:docstring> </tp:enumvalue> <tp:enumvalue suffix="Renamed" value="9"> - <tp:docstring> - The change is because a contact's unique identifier changed. + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>The change is because a contact's unique identifier changed. There must be exactly one handle in the removed set and exactly one handle in one of the added sets. The <tp:dbus-ref namespace="org.freedesktop.Telepathy.Connection.Interface.Renaming">Renamed</tp:dbus-ref> @@ -622,13 +709,18 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ <tp:dbus-ref namespace="org.freedesktop.Telepathy.Connection.Interface">Renaming</tp:dbus-ref> interface will have been emitted for the same handles, - shortly before this <tp:member-ref>MembersChanged</tp:member-ref> signal is emitted. + shortly before this <tp:member-ref>MembersChanged</tp:member-ref> signal is emitted.</p> </tp:docstring> </tp:enumvalue> <tp:enumvalue suffix="Permission_Denied" value="10"> - <tp:docstring> - The change is because there was no permission to contact the - requested handle. + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>The change is because there was no permission to contact the + requested handle.</p> + + <p>If a contact is removed from a group for this reason, the + equivalent D-Bus error is + <code>org.freedesktop.Telepathy.Error.PermissionDenied</code>. + </p> </tp:docstring> </tp:enumvalue> <tp:enumvalue suffix="Separated" value="11"> @@ -657,6 +749,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ the group with reason Separated. Application protocols in Tubes should be prepared to cope with this situation. </p> + + <p>The <tp:member-ref>SelfHandle</tp:member-ref> SHOULD NOT be + removed from channels with this reason.</p> </tp:docstring> </tp:enumvalue> </tp:enum> @@ -937,6 +1032,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ should be emitted when information is retrieved from the server, or changes occur.</p> + <p>If the <tp:member-ref>MembersChanged</tp:member-ref> or + <tp:member-ref>MembersChangedDetailed</tp:member-ref> signal indicates + that the <tp:member-ref>SelfHandle</tp:member-ref> has been removed from + the channel, and the channel subsequently emits <tp:dbus-ref + namespace="org.freedesktop.Telepathy.Channel">Closed</tp:dbus-ref>, + clients SHOULD consider the details given in the MembersChanged or + MembersChangedDetailed signal to be the reason why the channel closed.</p> + <p>Addition of members to the channel may be requested by using <tp:member-ref>AddMembers</tp:member-ref>. If remote acknowledgement is required, use of the AddMembers method will cause diff --git a/spec/Channel_Interface_Media_Signalling.xml b/spec/Channel_Interface_Media_Signalling.xml index 05b618b..8249331 100644 --- a/spec/Channel_Interface_Media_Signalling.xml +++ b/spec/Channel_Interface_Media_Signalling.xml @@ -22,6 +22,41 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ <tp:requires interface="org.freedesktop.Telepathy.Channel"/> <tp:requires interface="org.freedesktop.Telepathy.Channel.Type.StreamedMedia"/> + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>An interface for signalling a channel containing synchronised media + sessions which can contain an arbitrary number of streams. The + presence of this interface on a Channel indicates that the connection + manager will not carry out the actual streaming for this channel, + and that the client handling the channel is responsible for doing + so; in most cases we recommend doing this by using the + telepathy-farsight library.</p> + + <tp:rationale> + <p>Streaming audio and (particularly) video requires a high level of + integration with the UI, and having the connection manager act as + a proxy would be likely to introduce unacceptable latency. As a + result, audio/video streaming is offloaded into the client + where possible, as an exception to the general design of + Telepathy.</p> + </tp:rationale> + + <p>The negotiation interface is based on the API of the + <a href="http://farsight.freedesktop.org/">Farsight</a> library. + This, in turn, is based upon the IETF MMusic ICE drafts, where + connections are established by signalling potential connection + candidates to the peer until a usable connection is found, and + codecs are negotiated with an SDP-style offer and answer. However, + the principles should be applicable to other media streaming methods + and the API re-used without difficulty.</p> + + <p>Note that the naming conventions used in the MediaStreamHandler + and MediaSessionHandler interfaces are rather confusing; methods + have signal-like names and signals have method-like names, due to + the API being based rather too closely on that of Farsight. This + is for historical reasons and will be fixed in a future release + of the Telepathy specification.</p> + </tp:docstring> + <tp:simple-type name="Media_Session_Type" type="s"> <tp:docstring>The type of a media session. Currently, the only supported value is "rtp".</tp:docstring> @@ -105,17 +140,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ </tp:docstring> </tp:property> - <tp:docstring> - An interface for signalling a channel containing synchronised media - sessions which can contain an arbitrary number of streams. The negotiation - interface is based closely around the API of the Farsight library - (http://farsight.sourceforge.net/). This in turn is based upon the IETF - MMusic ICE drafts where connections are established by signalling potential - connection candidates to the peer until a usable connection is found, and - codecs are negotiated with an SDP-style offer and answer. However, the - principles should be applicable to other media streaming methods and the - API re-used without difficulty. - </tp:docstring> </interface> </node> <!-- vim:set sw=2 sts=2 et ft=xml: --> diff --git a/spec/Channel_Interface_Media_Signalling_Future.xml b/spec/Channel_Interface_Media_Signalling_Future.xml new file mode 100644 index 0000000..e1d2d25 --- /dev/null +++ b/spec/Channel_Interface_Media_Signalling_Future.xml @@ -0,0 +1,189 @@ +<?xml version="1.0" ?> +<node name="/Channel_Interface_Media_Signalling_Future" + xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"> + <tp:copyright> Copyright (C) 2009 Collabora Limited </tp:copyright> + <tp:copyright> Copyright (C) 2009 Nokia Corporation </tp:copyright> + <tp:license xmlns="http://www.w3.org/1999/xhtml"> + <p>This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version.</p> + + <p>This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details.</p> + + <p>You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA.</p> + </tp:license> + <interface name="org.freedesktop.Telepathy.Channel.Interface.MediaSignalling.FUTURE"> + <tp:requires interface="org.freedesktop.Telepathy.Channel"/> + <tp:requires interface="org.freedesktop.Telepathy.Channel.Type.StreamedMedia"/> + <tp:requires interface="org.freedesktop.Telepathy.Channel.Type.MediaSignalling"/> + + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>This interface contains functionality which we intend to incorporate + into the <tp:dbus-ref + namespace="org.freedesktop.Telepathy">Channel.Interface.MediaSignalling</tp:dbus-ref> + interface in future. It should be considered to be conceptually part + of the core MediaSignalling interface, but without API or ABI + guarantees.</p> + + <tp:rationale> + <p>The rationale is the same as for <tp:dbus-ref + namespace="org.freedesktop.Telepathy">Channel.FUTURE</tp:dbus-ref>.</p> + </tp:rationale> + </tp:docstring> + + <property name="ICETransportAvailable" + tp:name-for-bindings="ICE_Transport_Available" + type="b" access="read"> + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>True if this channel supports the use of the ICE-UDP transport + (<a href="http://xmpp.org/extensions/xep-0176.html">XEP-0176</a>, + <a href="http://tools.ietf.org/html/draft-ietf-mmusic-ice">ICE RFC + draft)</a>. Various other transports have boolean properties + that work in the same way as this one, so this description covers + all such transports.</p> + + <p>This property is immutable (cannot change), and therefore SHOULD + appear wherever immutable properties are reported, e.g. <tp:dbus-ref + namespace="org.freedesktop.Telepathy.Connection.Interface.Requests">NewChannels</tp:dbus-ref> + signals.</p> + + <p>Connection managers capable of signalling streamed media calls to + contacts SHOULD include the properties representing all supported + transports in the allowed properties list of the channel class + in <tp:dbus-ref + namespace="org.freedesktop.Telepathy.Connection.Interface.Requests">RequestableChannelClasses</tp:dbus-ref> + that advertises support for streamed media channels.</p> + + <p>Similarly, connection managers that support the <tp:dbus-ref + namespace="org.freedesktop.Telepathy.Connection.Interface">ContactCapabilities.DRAFT</tp:dbus-ref> + interface SHOULD include all supported transports in the allowed + properties list of the channel class that advertises a contact's + ability to receive streamed media calls.</p> + + <p>Clients that are able to receive calls with particular NAT + traversal mechanisms MAY include the following filters if + calling <tp:dbus-ref + namespace="org.freedesktop.Telepathy.Connection.Interface.ContactCapabilities.DRAFT">SetSelfCapabilities</tp:dbus-ref> + (clients of a <tp:dbus-ref + namespace="org.freedesktop.Telepathy">ChannelDispatcher.DRAFT</tp:dbus-ref> + SHOULD instead arrange for the ChannelDispatcher to do this, + by including the filters in their <tp:dbus-ref + namespace="org.freedesktop.Telepathy.Client.Handler.DRAFT">HandlerChannelFilter</tp:dbus-ref> + properties):</p> + + <ul> + <li>{ ChannelType = StreamedMedia, ICETransportAvailable = true } + if the ICE transport is supported</li> + <li>{ ChannelType = StreamedMedia, RawUDPTransportAvailable = true } + if the raw UDP transport is supported</li> + <li>... and so on, one filter per available transport.</li> + </ul> + + <p>Connection managers MAY use this information to adjust the + transports for which they advertise support to other contacts. + If a client has indicated support for any particular transports, + the connection manager SHOULD advertise support for + each transport that is supported by any client, and also + supported by the CM itself.</p> + + <tp:rationale> + <p>This minimizes the possibility that a call will be started that + cannot in fact succeed, because the intersection of the contacts' + available transports is empty.</p> + </tp:rationale> + + <p>If no client has mentioned any of the transports known to the + connection manager in a call to SetSelfCapabilities, the connection + manager SHOULD advertise support for every transport that it can + signal.</p> + + <tp:rationale> + <p>This simplifies implementation on integrated platforms like Maemo, + where it can be assumed that client libraries will support all the + "standard" transports known to any connection manager, and + lowers the "barrier to entry" for new Telepathy clients.</p> + </tp:rationale> + + <p>Clients making outgoing calls for which the same client that made + the request will handle the streaming MAY indicate their ability or + inability to handle particular transports by including + <code>ICETransportAvailable = true</code>, + <code>RawUDPTransportAvailable = false</code>, etc. + in the request properties parameter of their call to <tp:dbus-ref + namespace="org.freedesktop.Telepathy.Connection.Interface.Requests">EnsureChannel</tp:dbus-ref> + or similar functions. When they do so, the connection manager + SHOULD attempt to use a transport that the client has indicated + it is able to handle; if this is not possible, the connection + manager SHOULD raise an error instead of creating a channel.</p> + + <tp:rationale> + <p>This enables such clients to restrict the CM to the subset of + transports supported by that particular client.</p> + </tp:rationale> + + <p>Clients making outgoing calls for which they will not themselves + handle the streaming (e.g. an address book starting a call which + will be streamed by a separate call UI) SHOULD NOT include those + properties in the request.</p> + + <tp:rationale> + <p>In general, such a client can't know the capabilities of the + streaming implementation, or even which streaming implementation + will be used.</p> + </tp:rationale> + + <p>In the absence of any indication of supported transports from the + client, the connection manager SHOULD assume that the transports + indicated by calling SetSelfCapabilities are available. If + no transports were indicated as supported by calling + SetSelfCapabilities either, it SHOULD assume that any transport + that it can signal will be acceptable.</p> + + <p>If this property, or any of the similar transport availability + properties, is passed to EnsureChannel (as opposed to CreateChannel), + the connection manager SHOULD ignore these properties when checking + whether it can return an existing channel as suitable; these + properties only become significant when the connection manager has + decided to create a new channel.</p> + </tp:docstring> + </property> + + <property name="RawUDPTransportAvailable" + tp:name-for-bindings="Raw_UDP_Transport_Available" + type="b" access="read"> + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>The same as <tp:member-ref>ICETransportAvailable</tp:member-ref>, + but for raw UDP streaming as described by <a + href="http://xmpp.org/extensions/xep-0177.html">XEP-0177</a>.</p> + </tp:docstring> + </property> + + <property name="GoogleP2PTransportAvailable" + tp:name-for-bindings="Google_P2P_Transport_Available" + type="b" access="read"> + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>The same as <tp:member-ref>ICETransportAvailable</tp:member-ref>, + but for the variant of ICE used by the Google Talk peer-to-peer + connectivity establishment mechanism (as implemented in libjingle + 0.3).</p> + </tp:docstring> + </property> + + <property name="MSNTransportAvailable" + tp:name-for-bindings="MSN_Transport_Available" + type="b" access="read"> + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>The same as <tp:member-ref>ICETransportAvailable</tp:member-ref>, + but for the variant of ICE used by MSN.</p> + </tp:docstring> + </property> + + </interface> +</node> diff --git a/spec/Channel_Interface_Tube.xml b/spec/Channel_Interface_Tube.xml index ff249eb..b2d0f31 100644 --- a/spec/Channel_Interface_Tube.xml +++ b/spec/Channel_Interface_Tube.xml @@ -68,10 +68,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. </tp:docstring> </property> - <property name="Status" type="u" tp:type="Tube_Channel_State" access="read" - tp:name-for-bindings="Status"> + <property name="State" type="u" tp:type="Tube_Channel_State" access="read" + tp:name-for-bindings="State"> <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> - <p>Status of the tube in this channel.</p> + <p>State of the tube in this channel.</p> <p>When requesting a channel with <tp:dbus-ref namespace="org.freedesktop.Telepathy">Connection.Interface.Requests.CreateChannel</tp:dbus-ref>, this property MUST NOT be included in the request.</p> diff --git a/spec/Channel_Type_DBus_Tube.xml b/spec/Channel_Type_DBus_Tube.xml index 34130c2..2671a17 100644 --- a/spec/Channel_Type_DBus_Tube.xml +++ b/spec/Channel_Type_DBus_Tube.xml @@ -128,7 +128,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. For a multi-user (i.e. Handle_Type_Room) D-Bus tube, a mapping between contact handles and their unique bus names on this tube. For a peer-to-peer (i.e. Handle_Type_Contact) D-Bus tube, the empty - list. Change notification is via + dictionary. Change notification is via <tp:member-ref>DBusNamesChanged</tp:member-ref>. </tp:docstring> </property> diff --git a/spec/Channel_Type_File_Transfer.xml b/spec/Channel_Type_File_Transfer.xml index f5268c8..c88834c 100644 --- a/spec/Channel_Type_File_Transfer.xml +++ b/spec/Channel_Type_File_Transfer.xml @@ -20,7 +20,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ </tp:license> <interface name="org.freedesktop.Telepathy.Channel.Type.FileTransfer"> <tp:requires interface="org.freedesktop.Telepathy.Channel"/> - <tp:added version="0.17.UNRELEASED">(as stable API)</tp:added> + <tp:added version="0.17.18">(as stable API)</tp:added> <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>A channel type for transferring files. The transmission of data between contacts is achieved by reading from diff --git a/spec/Channel_Type_Streamed_Media.xml b/spec/Channel_Type_Streamed_Media.xml index 599fe16..b89065b 100644 --- a/spec/Channel_Type_Streamed_Media.xml +++ b/spec/Channel_Type_Streamed_Media.xml @@ -208,6 +208,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ will be emitted with the MEDIA_STREAM_PENDING_REMOTE_SEND flag set, and the signal emitted again with the flag cleared when the remote end has replied.</p> + + <p>If streams of the requested types have already been requested + via this method or <tp:dbus-ref + namespace="org.freedesktop.Telepathy.Channel.Type.StreamedMedia">FUTURE.InitialAudio</tp:dbus-ref>/<tp:dbus-ref + namespace="org.freedesktop.Telepathy.Channel.Type.StreamedMedia">FUTURE.InitialVideo</tp:dbus-ref>, + this method SHOULD return successfully.</p> </tp:docstring> <tp:changed version="0.17.2"> <p>It is valid to use a handle which is neither @@ -373,7 +379,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ <p>In the past, several other patterns have been used to place outgoing calls; see - <tt>http://telepathy.freedesktop.org/wiki/Requesting%20StreamedMedia%20channels</tt> + <a href="http://telepathy.freedesktop.org/wiki/Requesting%20StreamedMedia%20channels">'Requesting StreamedMedia Channels' on the Telepathy wiki</a> for the details.</p> <p>In general this should be used in conjunction with the <tp:dbus-ref @@ -391,7 +397,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ The channel-type-specific capability flags used for Channel.Type.StreamedMedia in the <tp:dbus-ref namespace="org.freedesktop.Telepathy">Connection.Interface.Capabilities</tp:dbus-ref> - interface. + interface. See the <tp:dbus-ref + namespace="org.freedesktop.Telepathy.Channel.Type.StreamedMedia">FUTURE.InitialAudio</tp:dbus-ref> + property for details of the mechanisms that will replace this. </tp:docstring> <tp:flag suffix="Audio" value="1"> <tp:docstring> diff --git a/spec/Channel_Type_Streamed_Media_Future.xml b/spec/Channel_Type_Streamed_Media_Future.xml new file mode 100644 index 0000000..2421ed6 --- /dev/null +++ b/spec/Channel_Type_Streamed_Media_Future.xml @@ -0,0 +1,166 @@ +<?xml version="1.0" ?> +<node name="/Channel_Type_Streamed_Media_Future" + xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"> + <tp:copyright> Copyright (C) 2009 Collabora Limited </tp:copyright> + <tp:copyright> Copyright (C) 2009 Nokia Corporation </tp:copyright> + <tp:license xmlns="http://www.w3.org/1999/xhtml"> + <p>This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version.</p> + + <p>This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details.</p> + + <p>You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA.</p> + </tp:license> + <interface name="org.freedesktop.Telepathy.Channel.Type.StreamedMedia.FUTURE"> + <tp:requires interface="org.freedesktop.Telepathy.Channel"/> + <tp:requires interface="org.freedesktop.Telepathy.Channel.Type.StreamedMedia"/> + + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>This interface contains functionality which we intend to incorporate + into the <tp:dbus-ref + namespace="org.freedesktop.Telepathy">Channel.Type.StreamedMedia</tp:dbus-ref> + interface in future. It should be considered to be conceptually part + of the core StreamedMedia interface, but without API or ABI + guarantees.</p> + + <tp:rationale> + <p>The rationale is the same as for <tp:dbus-ref + namespace="org.freedesktop.Telepathy">Channel.FUTURE</tp:dbus-ref>.</p> + </tp:rationale> + </tp:docstring> + + <property name="InitialAudio" tp:name-for-bindings="Initial_Audio" + type="b" access="read"> + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>If set to true in a channel request that will create a new channel, + the connection manager should immediately attempt to establish an + audio stream to the remote contact, making it unnecessary for the + client to call <tp:dbus-ref + namespace="org.freedesktop.Telepathy.Channel.Type.StreamedMedia">RequestStreams</tp:dbus-ref>.</p> + + <p>If this property, or InitialVideo, is passed to EnsureChannel + (as opposed to CreateChannel), the connection manager SHOULD ignore + these properties when checking whether it can return an existing + channel as suitable; these properties only become significant when + the connection manager has decided to create a new channel.</p> + + <p>If true on a requested channel, this indicates that the audio + stream has already been requested and the client does not need to + call RequestStreams, although it MAY still do so.</p> + + <p>If true on an unrequested (incoming) channel, this indicates that + the remote contact initially requested an audio stream; this does + not imply that that audio stream is still active (as indicated by + <tp:dbus-ref + namespace="org.freedesktop.Telepathy.Channel.Type.StreamedMedia">ListStreams</tp:dbus-ref>).</p> + + <p>This property is immutable (cannot change), and therefore SHOULD + appear wherever immutable properties are reported, e.g. <tp:dbus-ref + namespace="org.freedesktop.Telepathy.Connection.Interface.Requests">NewChannels</tp:dbus-ref> + signals.</p> + + <tp:rationale><p>This reduces D-Bus round trips.</p></tp:rationale> + + <p>Connection managers capable of signalling audio calls to contacts + SHOULD include a channel class in <tp:dbus-ref + namespace="org.freedesktop.Telepathy.Connection.Interface.Requests">RequestableChannelClasses</tp:dbus-ref> + with <tp:dbus-ref + namespace="org.freedesktop.Telepathy.Channel">ChannelType</tp:dbus-ref> + = <tp:dbus-ref + namespace="org.freedesktop.Telepathy.Channel.Type">StreamedMedia</tp:dbus-ref> + and <tp:dbus-ref + namespace="org.freedesktop.Telepathy.Channel">TargetHandleType</tp:dbus-ref> + = Contact in the fixed properties dictionary, and InitialAudio + (and also InitialVideo, if applicable) in the allowed properties + list. Clients wishing to discover whether a connection manager + can signal audio and/or video calls SHOULD use this information.</p> + + <tp:rationale> + <p>Not all protocols support signalling video calls, and it would be + possible (although unlikely) to have a protocol where only video, + and not audio, could be signalled.</p> + </tp:rationale> + + <p>Connection managers that support the <tp:dbus-ref + namespace="org.freedesktop.Telepathy.Connection.Interface">ContactCapabilities.DRAFT</tp:dbus-ref> + interface SHOULD represent the capabilities of receiving audio + and/or video calls by including a channel class in + a contact's capabilities with ChannelType = StreamedMedia + in the fixed properties dictionary, and InitialAudio and/or + InitialVideo in the allowed properties list. Clients wishing to + discover whether a particular contact is likely to be able to + receive audio and/or video calls SHOULD use this information.</p> + + <tp:rationale> + <p>Not all clients support video calls, and it would also be + possible (although unlikely) to have a client which could only + stream video, not audio.</p> + </tp:rationale> + + <p>Clients that are willing to receive audio and/or video calls + SHOULD include the following filters if calling <tp:dbus-ref + namespace="org.freedesktop.Telepathy.Connection.Interface.ContactCapabilities.DRAFT">SetSelfCapabilities</tp:dbus-ref> + (clients of a <tp:dbus-ref + namespace="org.freedesktop.Telepathy">ChannelDispatcher.DRAFT</tp:dbus-ref> + SHOULD instead arrange for the ChannelDispatcher to do this, + by including the filters in their <tp:dbus-ref + namespace="org.freedesktop.Telepathy.Client.Handler.DRAFT">HandlerChannelFilter</tp:dbus-ref> + properties):</p> + + <ul> + <li>{ ChannelType = StreamedMedia }</li> + <li>{ ChannelType = StreamedMedia, InitialAudio = true } + if receiving audio-only or audio+video calls is supported</li> + <li>{ ChannelType = StreamedMedia, InitialVideo = true } + if receiving video-only or audio+video calls is supported</li> + </ul> + + <tp:rationale> + <p>Connection managers for protocols with capability discovery, + like XMPP, need this information to advertise the appropriate + capabilities for their protocol.</p> + </tp:rationale> + + <p>If { ChannelType = StreamedMedia } is passed to + SetSelfCapabilities, but no more specific channel class for + audio or video has been passed to that method (in the presence + of a ChannelDispatcher, this would mean that there is at least one + client with that channel class in its HandlerChannelFilter, but + no installed client has the more specific channel classes in its + HandlerChannelFilter), then the connection manager SHOULD advertise + support for every content type (audio or video) that it + supports.</p> + + <tp:rationale> + <p>This lowers the "barrier to entry" by allowing a simple client + to say merely that it supports streamed media at all.</p> + </tp:rationale> + </tp:docstring> + </property> + + <property name="InitialVideo" tp:name-for-bindings="Initial_Video" + type="b" access="read"> + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>The same as <tp:member-ref>InitialAudio</tp:member-ref>, but for + a video stream. This property is immutable (cannot change).</p> + + <p>In particular, note that if this property is false, this does not + imply that an active video stream has not been added, only that no + video stream was active at the time the channel appeared.</p> + + <p>This property is the correct way to discover whether connection + managers, contacts etc. support video calls; it appears in + capabilities structures in the same way as InitialAudio.</p> + </tp:docstring> + </property> + + </interface> +</node> diff --git a/spec/Connection.xml b/spec/Connection.xml index bc46ecf..97a3c4c 100644 --- a/spec/Connection.xml +++ b/spec/Connection.xml @@ -492,6 +492,12 @@ USA.</p> The requested channel type cannot be created with the given handle </tp:docstring> </tp:error> + <tp:error name="org.freedesktop.Telepathy.Error.NotCapable"> + <tp:docstring> + The requested channel cannot be created because contact doesn't + have the required capabilities. + </tp:docstring> + </tp:error> <tp:error name="org.freedesktop.Telepathy.Error.Channel.Banned"/> <tp:error name="org.freedesktop.Telepathy.Error.Channel.Full"/> <tp:error name="org.freedesktop.Telepathy.Error.Channel.InviteOnly"/> @@ -633,83 +639,275 @@ USA.</p> </tp:docstring> </tp:enumvalue> </tp:enum> + <tp:enum name="Connection_Status_Reason" type="u"> + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>A reason why the status of the connection changed. Apart from + Requested, the values of this enumeration only make sense as + reasons why the status changed to Disconnected.</p> + </tp:docstring> + <tp:enumvalue suffix="None_Specified" value="0"> - <tp:docstring> - There is no reason set for this state change. + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>There is no reason set for this state change. Unknown status + reasons SHOULD be treated like this reason.</p> + + <p>When disconnected for this reason, the equivalent D-Bus error is + <code>org.freedesktop.Telepathy.Error.Disconnected</code>.</p> </tp:docstring> </tp:enumvalue> + <tp:enumvalue suffix="Requested" value="1"> - <tp:docstring> - The change is in response to a user request. + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>The change is in response to a user request. Changes to the + Connecting or Connected status SHOULD always indicate this reason; + changes to the Disconnected status SHOULD indicate this reason + if and only if the disconnection was requested by the user.</p> + + <p>When disconnected for this reason, the equivalent D-Bus error is + <code>org.freedesktop.Telepathy.Error.Cancelled</code>.</p> </tp:docstring> </tp:enumvalue> + <tp:enumvalue suffix="Network_Error" value="2"> - <tp:docstring> - There was an error sending or receiving on the network socket. + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>There was an error sending or receiving on the network socket.</p> + + <p>When disconnected for this reason, the equivalent D-Bus error is + <code>org.freedesktop.Telepathy.Error.NetworkError</code>.</p> </tp:docstring> </tp:enumvalue> + <tp:enumvalue suffix="Authentication_Failed" value="3"> - <tp:docstring> - The username or password was invalid. + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>The username or password was invalid.</p> + + <p>When disconnected for this reason, the equivalent D-Bus error is + <code>org.freedesktop.Telepathy.Error.AuthenticationFailed</code>. + </p> </tp:docstring> </tp:enumvalue> + <tp:enumvalue suffix="Encryption_Error" value="4"> - <tp:docstring> - There was an error negotiating SSL on this connection, or + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>There was an error negotiating SSL on this connection, or encryption was unavailable and require-encryption was set when the - connection was created. + connection was created.</p> + + <p>When disconnected for this reason, the equivalent D-Bus error is + <code>org.freedesktop.Telepathy.Error.EncryptionNotAvailable</code> + if encryption was not available at all, or + <code>org.freedesktop.Telepathy.Error.EncryptionError</code> + if encryption failed.</p> </tp:docstring> </tp:enumvalue> + <tp:enumvalue suffix="Name_In_Use" value="5"> - <tp:docstring> - Someone is already connected to the server using the name - you are trying to connect with. + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>In general, this reason indicates that the requested account + name or other identification could not be used due to conflict + with another connection. It can be divided into three cases:</p> + + <ul> + <li>If the status change is from Connecting to Disconnected + and the 'register' parameter to RequestConnection was present + and true, the requested account could not be created on the + server because it already exists.</li> + + <li>If the status change is from Connecting to Disconnected + but the 'register' parameter is absent or false, the connection + manager could not connect to the specified account because + a connection to that account already exists. + + <tp:rationale> + In some protocols, like XMPP (when connecting with the same + JID and resource as an existing connection), the existing + connection "wins" and the new one fails to connect. + </tp:rationale> + </li> + + <li>If the status change is from Connected to Disconnected, + the existing connection was automatically disconnected because + a new connection to the same account (perhaps from a different + client or location) was established. + + <tp:rationale> + In some protocols, like MSNP (when connecting twice with the + same Passport), the new connection "wins" and the + existing one is automatically disconnected. + </tp:rationale> + </li> + </ul> + + <p>When disconnected for this reason, the equivalent D-Bus error is + <code>org.freedesktop.Telepathy.Error.NotYours</code>. + </p> + + <tp:rationale> + These three errors are distinct but very similar, and can be + distinguished by other factors. + </tp:rationale> </tp:docstring> </tp:enumvalue> + <tp:enumvalue suffix="Cert_Not_Provided" value="6"> - <tp:docstring> - The server did not provide a SSL certificate. + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>The server did not provide a SSL certificate.</p> + + <p>When disconnected for this reason, the equivalent D-Bus error is + <code>org.freedesktop.Telepathy.Error.Cert.NotProvided</code>. + </p> </tp:docstring> </tp:enumvalue> + <tp:enumvalue suffix="Cert_Untrusted" value="7"> - <tp:docstring> - The server's SSL certificate could not be trusted. + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>The server's SSL certificate is signed by an untrusted certifying + authority. This error SHOULD NOT be used to represent a self-signed + certificate: use the more specific Cert_Self_Signed reason for + that.</p> + + <p>When disconnected for this reason, the equivalent D-Bus error is + <code>org.freedesktop.Telepathy.Error.Cert.Untrusted</code>. + </p> </tp:docstring> </tp:enumvalue> + <tp:enumvalue suffix="Cert_Expired" value="8"> - <tp:docstring> - The server's SSL certificate has expired. + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>The server's SSL certificate has expired.</p> + + <p>When disconnected for this reason, the equivalent D-Bus error is + <code>org.freedesktop.Telepathy.Error.Cert.Expired</code>. + </p> </tp:docstring> </tp:enumvalue> + <tp:enumvalue suffix="Cert_Not_Activated" value="9"> - <tp:docstring> - The server's SSL certificate is not yet valid. + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>The server's SSL certificate is not yet valid.</p> + + <p>When disconnected for this reason, the equivalent D-Bus error is + <code>org.freedesktop.Telepathy.Error.Cert.NotActivated</code>. + </p> </tp:docstring> </tp:enumvalue> + <tp:enumvalue suffix="Cert_Hostname_Mismatch" value="10"> - <tp:docstring> - The server's SSL certificate did not match its hostname. + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>The server's SSL certificate did not match its hostname.</p> + + <p>When disconnected for this reason, the equivalent D-Bus error is + <code>org.freedesktop.Telepathy.Error.Cert.HostnameMismatch</code>. + </p> </tp:docstring> </tp:enumvalue> + <tp:enumvalue suffix="Cert_Fingerprint_Mismatch" value="11"> - <tp:docstring> - The server's SSL certificate does not have the expected - fingerprint. + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>The server's SSL certificate does not have the expected + fingerprint.</p> + + <p>When disconnected for this reason, the equivalent D-Bus error is + <code>org.freedesktop.Telepathy.Error.Cert.FingerprintMismatch</code>. + </p> </tp:docstring> </tp:enumvalue> + <tp:enumvalue suffix="Cert_Self_Signed" value="12"> - <tp:docstring> - The server's SSL certificate is self-signed. + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>The server's SSL certificate is self-signed.</p> + + <p>When disconnected for this reason, the equivalent D-Bus error is + <code>org.freedesktop.Telepathy.Error.Cert.HostnameMismatch</code>. + </p> </tp:docstring> </tp:enumvalue> + <tp:enumvalue suffix="Cert_Other_Error" value="13"> - <tp:docstring> - There was some other error validating the server's SSL certificate. + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>There was some other error validating the server's SSL + certificate.</p> + + <p>When disconnected for this reason, the equivalent D-Bus error is + <code>org.freedesktop.Telepathy.Error.Cert.Invalid</code>. + </p> </tp:docstring> </tp:enumvalue> </tp:enum> + <signal name="ConnectionError" tp:name-for-bindings="Connection_Error"> + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>Emitted when an error occurs that renders this connection unusable. + </p> + + <p>Whenever this signal is emitted, it MUST immediately be followed by + a <tp:member-ref>StatusChanged</tp:member-ref> signal with status + Connection_Status_Reason_Disconnected and an appropriate reason + code.</p> + + <p>Connection managers SHOULD emit this signal on disconnection, but + need not do so. Clients MUST support connection managers that emit + StatusChanged(Disconnected, ...) without first emitting + ConnectionError.</p> + + <tp:rationale> + <p>This signal provides additional information about the reason + for disconnection. The reason for connection is always + straightforward - it was requested - so it does not need further + explanation. However, on errors, it can be useful to provide + additional information.</p> + + <p>The <tp:type>Connection_Status_Reason</tp:type> is not given + here, since it will be signalled in + <tp:member-ref>StatusChanged</tp:member-ref>. A reasonable client + implementation would be to store the information given by this + signal until StatusChanged is received, at which point the + information given by this signal can be used to supplement the + StatusChanged signal.</p> + </tp:rationale> + </tp:docstring> + + <arg name="Error" type="s" tp:type="DBus_Error_Name"> + <tp:docstring> + The name of a D-Bus error describing the error that occurred, + which may correspond to a + <tp:type>Connection_Status_Reason</tp:type> or be a + protocol-specific or connection-manager-specific error in a + suitable namespace. + + <tp:rationale> + For instance, a SIP connection manager could signal + "402 Payment Required" as an error in a + connection-manager-specific namespace, or a link-local + XMPP implementation that used Avahi could provide the error + given to it by the avahi-daemon. + </tp:rationale> + </tp:docstring> + </arg> + + <arg name="Details" type="a{sv}" tp:type="String_Variant_Map"> + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>Additional information about the error, which may include + the following well-known keys:</p> + + <dl> + <dt>debug-message (s)</dt> + <dd>Debugging information on the change, corresponding to the + message part of a D-Bus error message, which SHOULD NOT be + displayed to users under normal circumstances</dd> + </dl> + + <tp:rationale> + <p>This argument allows for future extensions. For instance, + if indicating DNS lookup failure, we could define a key + that indicates the hostname that could not be found.</p> + </tp:rationale> + </tp:docstring> + </arg> + + </signal> + <signal name="StatusChanged" tp:name-for-bindings="Status_Changed"> <arg name="Status" type="u" tp:type="Connection_Status"> <tp:docstring> diff --git a/spec/Connection_Interface_Contact_Info.xml b/spec/Connection_Interface_Contact_Info.xml index c29f9fe..e7b033b 100644 --- a/spec/Connection_Interface_Contact_Info.xml +++ b/spec/Connection_Interface_Contact_Info.xml @@ -19,7 +19,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ </tp:license> <interface name="org.freedesktop.Telepathy.Connection.Interface.ContactInfo.DRAFT" tp:causes-havoc="experimental"> - <tp:added version="0.17.UNRELEASED">(as a draft)</tp:added> + <tp:added version="0.17.18">(as a draft)</tp:added> <tp:requires interface="org.freedesktop.Telepathy.Connection"/> <tp:struct name="Contact_Info_Field" array-name="Contact_Info_Field_List"> diff --git a/spec/Connection_Interface_Location.xml b/spec/Connection_Interface_Location.xml index dbd8d83..8821ec0 100644 --- a/spec/Connection_Interface_Location.xml +++ b/spec/Connection_Interface_Location.xml @@ -20,7 +20,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ </tp:license> <interface name="org.freedesktop.Telepathy.Connection.Interface.Location.DRAFT" tp:causes-havoc='experimental'> - <tp:added version="0.17.UNRELEASED">(as a draft)</tp:added> + <tp:added version="0.17.18">(as a draft)</tp:added> <tp:requires interface="org.freedesktop.Telepathy.Connection"/> <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> diff --git a/spec/Connection_Interface_Requests.xml b/spec/Connection_Interface_Requests.xml index 203421b..3e47262 100644 --- a/spec/Connection_Interface_Requests.xml +++ b/spec/Connection_Interface_Requests.xml @@ -211,6 +211,12 @@ property provided was not a valid DNS name. </tp:docstring> </tp:error> + <tp:error name="org.freedesktop.Telepathy.Error.NotCapable"> + <tp:docstring> + The requested channel cannot be created because the requested + contact is using a client that lacks a particular feature. + </tp:docstring> + </tp:error> <tp:error name="org.freedesktop.Telepathy.Error.NotAvailable"> <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>The requested channel cannot be created, but in @@ -218,8 +224,6 @@ For instance, this might be because:</p> <ul> - <li>the requested contact is using a client - that lacks a particular feature</li> <li>a channel matching the request already exists and the protocol requires that only one such channel can exist at a time</li> @@ -346,12 +350,16 @@ property provided was not a valid DNS name. </tp:docstring> </tp:error> + <tp:error name="org.freedesktop.Telepathy.Error.NotCapable"> + <tp:docstring> + The requested channel cannot be created because the requested + contact is using a client that lacks a particular feature. + </tp:docstring> + </tp:error> <tp:error name="org.freedesktop.Telepathy.Error.NotAvailable"> <tp:docstring> The requested channel cannot be created, but in - principle, a similar request might succeed in future. For instance, - this might be because the requested contact is using a client - that lacks a particular feature. + principle, a similar request might succeed in future. </tp:docstring> </tp:error> <tp:error name="org.freedesktop.Telepathy.Error.Channel.Banned"/> diff --git a/spec/all.xml b/spec/all.xml index cee9b92..7745d54 100644 --- a/spec/all.xml +++ b/spec/all.xml @@ -3,7 +3,7 @@ xmlns:xi="http://www.w3.org/2001/XInclude"> <tp:title>Telepathy D-Bus Interface Specification</tp:title> -<tp:version>0.17.18</tp:version> +<tp:version>0.17.19</tp:version> <tp:copyright>Copyright (C) 2005-2008 Collabora Limited</tp:copyright> <tp:copyright>Copyright (C) 2005-2008 Nokia Corporation</tp:copyright> @@ -45,6 +45,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ <xi:include href="Channel_Future.xml"/> <xi:include href="Channel_Type_Contact_List.xml"/> <xi:include href="Channel_Type_Streamed_Media.xml"/> +<xi:include href="Channel_Type_Streamed_Media_Future.xml"/> <xi:include href="Channel_Type_Room_List.xml"/> <xi:include href="Channel_Type_Text.xml"/> <xi:include href="Channel_Type_Tubes.xml"/> @@ -62,6 +63,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ <xi:include href="Channel_Interface_HTML.xml"/> <xi:include href="Channel_Interface_Password.xml"/> <xi:include href="Channel_Interface_Media_Signalling.xml"/> +<xi:include href="Channel_Interface_Media_Signalling_Future.xml"/> <xi:include href="Channel_Interface_Messages.xml"/> <xi:include href="Channel_Interface_Tube.xml"/> diff --git a/spec/errors.xml b/spec/errors.xml index 679e3f4..0a2d7d2 100644 --- a/spec/errors.xml +++ b/spec/errors.xml @@ -35,7 +35,17 @@ <tp:error name="Disconnected"> <tp:docstring> - The connection is not currently connected and cannot be used. + The connection is not currently connected and cannot be used. + This error may also be raised when operations are performed on a + Connection for which + <tp:dbus-ref namespace="org.freedesktop.Telepathy.Connection">StatusChanged</tp:dbus-ref> + has signalled status Disconnected for reason None. + + <tp:rationale> + The second usage corresponds to None in the + <tp:type>Connection_Status_Reason</tp:type> enum; if a better reason + is available, the corresponding error should be used instead. + </tp:rationale> </tp:docstring> </tp:error> @@ -73,7 +83,216 @@ <tp:error name="Cancelled"> <tp:docstring> Raised by an ongoing request if it is cancelled by user request before - it has completed. + it has completed, or when operations are performed on an object which + the user has asked to close (for instance, a Connection where the user + has called Disconnect, or a Channel where the user has called Close). + + <tp:rationale> + The second form can be used to correspond to the Requested member in + the <tp:type>Connection_Status_Reason</tp:type> enum, or to + to represent the situation where disconnecting a Connection, + closing a Channel, etc. has been requested by the user but this + request has not yet been acted on, for instance because the + service will only act on the request when it has finished processing + an event queue. + </tp:rationale> + </tp:docstring> + </tp:error> + + <tp:error name="Authentication Failed"> + <tp:docstring> + Raised when authentication with a service was unsuccessful. + <tp:rationale> + This corresponds to Authentication_Failed in the + <tp:type>Connection_Status_Reason</tp:type> enum. + </tp:rationale> + </tp:docstring> + </tp:error> + + <tp:error name="Encryption Not Available"> + <tp:docstring> + Raised if a user request insisted that encryption should be used, + but encryption was not actually available. + + <tp:rationale> + This corresponds to part of Encryption_Error in the + <tp:type>Connection_Status_Reason</tp:type> enum. It's been separated + into a distinct error here because the two concepts that were part + of EncryptionError seem to be things that could reasonably appear + differently in the UI. + </tp:rationale> + </tp:docstring> + </tp:error> + + <tp:error name="Encryption Error"> + <tp:docstring> + Raised if encryption appears to be available, but could not actually be + used (for instance if SSL/TLS negotiation fails). + <tp:rationale> + This corresponds to part of Encryption_Error in the + <tp:type>Connection_Status_Reason</tp:type> enum. + </tp:rationale> + </tp:docstring> + </tp:error> + + <tp:error name="Cert.Not Provided"> + <tp:docstring> + Raised if the server did not provide a SSL/TLS certificate. This error + MUST NOT be used to represent the absence of a client certificate + provided by the Telepathy connection manager. + <tp:rationale> + This corresponds to Cert_Not_Provided in the + <tp:type>Connection_Status_Reason</tp:type> enum. That error + explicitly applied only to server SSL certificates, so this one + is similarly limited; having the CM present a client certificate + is a possible future feature, but it should have its own error + handling. + </tp:rationale> + </tp:docstring> + </tp:error> + + <tp:error name="Cert.Untrusted"> + <tp:docstring> + Raised if the server provided a SSL/TLS certificate signed by an + untrusted certifying authority. This error SHOULD NOT be used to + represent a self-signed certificate: see the Self Signed error for that. + <tp:rationale> + This corresponds to Cert_Untrusted in the + <tp:type>Connection_Status_Reason</tp:type> enum, with a clarification + to avoid ambiguity. + </tp:rationale> + </tp:docstring> + </tp:error> + + <tp:error name="Cert.Expired"> + <tp:docstring> + Raised if the server provided an expired SSL/TLS certificate. + <tp:rationale> + This corresponds to Cert_Expired in the + <tp:type>Connection_Status_Reason</tp:type> enum. + </tp:rationale> + </tp:docstring> + </tp:error> + + <tp:error name="Cert.Not Activated"> + <tp:docstring> + Raised if the server provided an SSL/TLS certificate that will become + valid at some point in the future. + <tp:rationale> + This corresponds to Cert_Not_Activated in the + <tp:type>Connection_Status_Reason</tp:type> enum. + </tp:rationale> + </tp:docstring> + </tp:error> + + <tp:error name="Cert.Fingerprint Mismatch"> + <tp:docstring> + Raised if the server provided an SSL/TLS certificate that did not have + the expected fingerprint. + <tp:rationale> + This corresponds to Cert_Fingerprint_Mismatch in the + <tp:type>Connection_Status_Reason</tp:type> enum. + </tp:rationale> + </tp:docstring> + </tp:error> + + <tp:error name="Cert.Hostname Mismatch"> + <tp:docstring> + Raised if the server provided an SSL/TLS certificate that did not match + its hostname. + <tp:rationale> + This corresponds to Cert_Hostname_Mismatch in the + <tp:type>Connection_Status_Reason</tp:type> enum. + </tp:rationale> + </tp:docstring> + </tp:error> + + <tp:error name="Cert.Self Signed"> + <tp:docstring> + Raised if the server provided an SSL/TLS certificate that is self-signed + and untrusted. + <tp:rationale> + This corresponds to Cert_Hostname_Mismatch in the + <tp:type>Connection_Status_Reason</tp:type> enum. + </tp:rationale> + </tp:docstring> + </tp:error> + + <tp:error name="Cert.Invalid"> + <tp:docstring> + Raised if the server provided an SSL/TLS certificate that is + unacceptable in some way that does not have a more specific error. + <tp:rationale> + This corresponds to Cert_Other_Error in the + <tp:type>Connection_Status_Reason</tp:type> enum. + </tp:rationale> + </tp:docstring> + </tp:error> + + <tp:error name="Not Capable"> + <tp:docstring> + Raised when requested functionality is unavailable due to contact + not having required capabilities. + </tp:docstring> + </tp:error> + + <tp:error name="Offline"> + <tp:docstring> + Raised when requested functionality is unavailable because a contact is + offline. + + <tp:rationale> + This corresponds to Offline in the + <tp:type>Channel_Group_Change_Reason</tp:type> enum. + </tp:rationale> + </tp:docstring> + </tp:error> + + <tp:error name="Channel.Kicked"> + <tp:docstring> + Used to represent a user being ejected from a channel by another user, + for instance being kicked from a chatroom. + + <tp:rationale> + This corresponds to Kicked in the + <tp:type>Channel_Group_Change_Reason</tp:type> enum. + </tp:rationale> + </tp:docstring> + </tp:error> + + <tp:error name="Busy"> + <tp:docstring> + Used to represent a user being removed from a channel because of a + "busy" indication. + + <tp:rationale> + This corresponds to Busy in the + <tp:type>Channel_Group_Change_Reason</tp:type> enum. + </tp:rationale> + </tp:docstring> + </tp:error> + + <tp:error name="No Answer"> + <tp:docstring> + Used to represent a user being removed from a channel because they did + not respond, e.g. to a StreamedMedia call. + + <tp:rationale> + This corresponds to No_Answer in the + <tp:type>Channel_Group_Change_Reason</tp:type> enum. + </tp:rationale> + </tp:docstring> + </tp:error> + + <tp:error name="Does Not Exist"> + <tp:docstring> + Raised when the requested user does not, in fact, exist. + + <tp:rationale> + This corresponds to Invalid_Contact in the + <tp:type>Channel_Group_Change_Reason</tp:type> enum, but can also be + used to represent other things not existing (like chatrooms, perhaps). + </tp:rationale> </tp:docstring> </tp:error> |