summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2008-02-21 10:11:39 +0000
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2008-02-21 10:11:39 +0000
commit74cc3e53e312c85c8da1ec951d36930543058eaa (patch)
treec5d2e21c90e0a1f8a1d5c9fde0ebfaf8928c6e0e /spec
parent6287cdd68ae7de890a475d0359b86618b0a5b252 (diff)
Update spec to 0.17.1
Diffstat (limited to 'spec')
-rw-r--r--spec/Channel.xml4
-rw-r--r--spec/Channel_Handler.xml62
-rw-r--r--spec/Channel_Interface_Call_Merging.xml79
-rw-r--r--spec/Channel_Interface_Group.xml20
-rw-r--r--spec/Channel_Interface_Hold.xml135
-rw-r--r--spec/Channel_Interface_Transfer.xml3
-rw-r--r--spec/Channel_Type_Contact_Search.xml3
-rw-r--r--spec/Channel_Type_Room_List.xml9
-rw-r--r--spec/Channel_Type_Streamed_Media.xml15
-rw-r--r--spec/Channel_Type_Text.xml26
-rw-r--r--spec/Channel_Type_Tubes.xml150
-rw-r--r--spec/Connection.xml45
-rw-r--r--spec/Connection_Interface_Aliasing.xml20
-rw-r--r--spec/Connection_Interface_Avatars.xml23
-rw-r--r--spec/Connection_Interface_Capabilities.xml45
-rw-r--r--spec/Connection_Interface_Contact_Info.xml3
-rw-r--r--spec/Connection_Interface_Forwarding.xml3
-rw-r--r--spec/Connection_Interface_Presence.xml55
-rw-r--r--spec/Connection_Interface_Privacy.xml3
-rw-r--r--spec/Connection_Interface_Renaming.xml3
-rw-r--r--spec/Connection_Manager.xml222
-rw-r--r--spec/Media_Session_Handler.xml3
-rw-r--r--spec/Media_Stream_Handler.xml48
-rw-r--r--spec/Properties_Interface.xml40
-rw-r--r--spec/all.xml10
-rw-r--r--spec/generic-types.xml67
26 files changed, 880 insertions, 216 deletions
diff --git a/spec/Channel.xml b/spec/Channel.xml
index 43cf590..5e8678c 100644
--- a/spec/Channel.xml
+++ b/spec/Channel.xml
@@ -52,7 +52,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</tp:docstring>
</signal>
<method name="GetChannelType">
- <arg direction="out" type="s" tp:type="Interface">
+ <arg direction="out" type="s" tp:type="DBus_Interface">
<tp:docstring>The interface name</tp:docstring>
</arg>
<tp:docstring>
@@ -79,7 +79,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</tp:docstring>
</method>
<method name="GetInterfaces">
- <arg direction="out" type="as" tp:type="Interface[]">
+ <arg direction="out" type="as" tp:type="DBus_Interface[]">
<tp:docstring>
An array of the D-Bus interface names
</tp:docstring>
diff --git a/spec/Channel_Handler.xml b/spec/Channel_Handler.xml
new file mode 100644
index 0000000..440ec2a
--- /dev/null
+++ b/spec/Channel_Handler.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" ?>
+<node name="/Channel_Handler" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
+ <tp:copyright>Copyright (C) 2007 Collabora Limited</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.ChannelHandler">
+
+ <method name="HandleChannel">
+ <arg direction="in" type="s" name="Bus_Name" tp:type="DBus_Bus_Name">
+ <tp:docstring>
+ The bus name of the connection and channel
+ </tp:docstring>
+ </arg>
+ <arg direction="in" type="o" name="Connection">
+ <tp:docstring>
+ The object-path of the connection that owns the channel
+ </tp:docstring>
+ </arg>
+ <arg direction="in" type="s" tp:type="DBus_Interface" name="Channel_Type">
+ <tp:docstring>
+ The channel type
+ </tp:docstring>
+ </arg>
+ <arg direction="in" type="o" name="Channel">
+ <tp:docstring>
+ The object-path of the channel
+ </tp:docstring>
+ </arg>
+ <arg direction="in" type="u" tp:type="Handle_Type" name="Handle_Type">
+ <tp:docstring>The type of the handle that the channel communicates
+ with, or 0 if there is no associated handle</tp:docstring>
+ </arg>
+ <arg direction="in" type="u" tp:type="Handle" name="Handle">
+ <tp:docstring>The handle that the channel communicates with,
+ or 0 if there is no associated handle</tp:docstring>
+ </arg>
+ <tp:docstring>
+ Called when a channel handler should handle a new channel.
+ </tp:docstring>
+ <!-- FIXME: possible errors? -->
+ </method>
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ <p>An interface exported by client applications which are able to
+ handle incoming channels.</p>
+ </tp:docstring>
+ </interface>
+</node>
+<!-- vim:set sw=2 sts=2 et ft=xml: -->
+
diff --git a/spec/Channel_Interface_Call_Merging.xml b/spec/Channel_Interface_Call_Merging.xml
new file mode 100644
index 0000000..f34bf99
--- /dev/null
+++ b/spec/Channel_Interface_Call_Merging.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" ?>
+<node name="/Channel_Interface_Call_Merging" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
+ <tp:copyright> Copyright (C) 2005-2008 Collabora Limited </tp:copyright>
+ <tp:copyright> Copyright (C) 2005-2008 Nokia Corporation </tp:copyright>
+ <tp:copyright> Copyright (C) 2006 INdT </tp:copyright>
+ <tp:license xmlns="http://www.w3.org/1999/xhtml">
+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.
+
+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
+Library General Public License for more details.
+
+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.
+ </tp:license>
+
+ <interface name="org.freedesktop.Telepathy.Channel.Interface.CallMerging"
+ tp:causes-havoc='not yet API-stable'>
+ <tp:requires interface="org.freedesktop.Telepathy.Channel.Type.StreamedMedia"/>
+
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ <p>Interface for streamed media channels that can be merged and split
+ in the same sort of way as in GSM or PBX telephony.</p>
+ </tp:docstring>
+
+ <method name="Merge">
+ <arg direction="in" type="o" name="Other">
+ <tp:docstring>
+ The other channel to merge into this one
+ </tp:docstring>
+ </arg>
+ <tp:docstring>
+ Request that the given channel be merged into this one. This means
+ that the other channel is closed, and all its participants are added
+ to the channel on which this method was called.
+ </tp:docstring>
+ <tp:possible-errors>
+ <tp:error name="org.freedesktop.Telepathy.Error.Disconnected"/>
+ <tp:error name="org.freedesktop.Telepathy.Error.PermissionDenied"/>
+ <tp:error name="org.freedesktop.Telepathy.Error.NetworkError"/>
+ <tp:error name="org.freedesktop.Telepathy.Error.InvalidArgument"/>
+ <tp:error name="org.freedesktop.Telepathy.Error.NotAvailable"/>
+ </tp:possible-errors>
+ </method>
+
+ <method name="Split">
+ <arg direction="in" name="Contact" type="u" tp:type="Contact_Handle">
+ <tp:docstring>
+ The handle of the contact to split off a conversation with, who
+ must be a member in the channel's Group interface
+ </tp:docstring>
+ </arg>
+ <arg direction="out" name="Channel" type="o">
+ <tp:docstring>
+ The new channel
+ </tp:docstring>
+ </arg>
+ <tp:docstring>
+ Request that the given contact is removed from this channel, and
+ a new channel is created to communicate with them privately instead.
+ This is the inverse of Merge.
+ </tp:docstring>
+ <tp:possible-errors>
+ <tp:error name="org.freedesktop.Telepathy.Error.Disconnected"/>
+ <tp:error name="org.freedesktop.Telepathy.Error.PermissionDenied"/>
+ <tp:error name="org.freedesktop.Telepathy.Error.NetworkError"/>
+ <tp:error name="org.freedesktop.Telepathy.Error.InvalidHandle"/>
+ <tp:error name="org.freedesktop.Telepathy.Error.NotAvailable"/>
+ </tp:possible-errors>
+ </method>
+
+ </interface>
+</node>
+<!-- vim:set sw=2 sts=2 et ft=xml: -->
diff --git a/spec/Channel_Interface_Group.xml b/spec/Channel_Interface_Group.xml
index ff3798e..940269a 100644
--- a/spec/Channel_Interface_Group.xml
+++ b/spec/Channel_Interface_Group.xml
@@ -20,6 +20,19 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</tp:license>
<interface name="org.freedesktop.Telepathy.Channel.Interface.Group">
<tp:requires interface="org.freedesktop.Telepathy.Channel"/>
+
+ <tp:struct name="Local_Pending_Info" array-name="Local_Pending_Info_List">
+ <tp:docstring>A struct (handle to be added, handle of contact
+ requesting the change, reason code, optional message)
+ representing a contact whose attempt to join a group is to be confirmed
+ by the local user, as returned by GetLocalPendingMembersWithInfo
+ on the Group interface.</tp:docstring>
+ <tp:member type="u" tp:type="Contact_Handle" name="To_Be_Added"/>
+ <tp:member type="u" tp:type="Contact_Handle" name="Actor"/>
+ <tp:member type="u" tp:type="Channel_Group_Change_Reason" name="Reason"/>
+ <tp:member type="s" name="Message"/>
+ </tp:struct>
+
<method name="AddMembers">
<arg direction="in" name="contacts" type="au" tp:type="Contact_Handle[]">
<tp:docstring>
@@ -34,11 +47,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
<p>Invite all the given contacts into the channel, or accept requests for
channel membership for contacts on the pending local list.</p>
-
+
<p>A message may be provided along with the request, which will be sent
to the server if supported. See the CHANNEL_GROUP_FLAG_MESSAGE_ADD and
CHANNEL_GROUP_FLAG_MESSAGE_ACCEPT flags to see in which cases this
message should be provided.</p>
+
+ <p>Attempting to add contacts who are already members is allowed;
+ connection managers must silently accept this, without error.</p>
</tp:docstring>
<tp:possible-errors>
<tp:error name="org.freedesktop.Telepathy.Error.Disconnected"/>
@@ -233,7 +249,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
requesting channel membership and awaiting local approval with
AddMembers.
</tp:docstring>
- <arg direction="out" type="a(uuus)">
+ <arg direction="out" type="a(uuus)" tp:type="Local_Pending_Info[]">
<tp:docstring>
An array of structs containing:
<ul>
diff --git a/spec/Channel_Interface_Hold.xml b/spec/Channel_Interface_Hold.xml
index c17d84c..91e72ff 100644
--- a/spec/Channel_Interface_Hold.xml
+++ b/spec/Channel_Interface_Hold.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" ?>
<node name="/Channel_Interface_Hold" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
- <tp:copyright> Copyright (C) 2005, 2006 Collabora Limited </tp:copyright>
- <tp:copyright> Copyright (C) 2005, 2006 Nokia Corporation </tp:copyright>
+ <tp:copyright> Copyright (C) 2005-2008 Collabora Limited </tp:copyright>
+ <tp:copyright> Copyright (C) 2005-2008 Nokia Corporation </tp:copyright>
<tp:copyright> Copyright (C) 2006 INdT </tp:copyright>
<tp:license xmlns="http://www.w3.org/1999/xhtml">
This library is free software; you can redistribute it and/or
@@ -18,106 +18,107 @@ 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.
</tp:license>
- <tp:enum name="Channel_Hold_State" type="u">
- <tp:enumvalue suffix="None" value="0">
- <tp:docstring>
- Neither the local user and the remote member are on hold, and media
- is being sent bidirectionally.
- </tp:docstring>
- </tp:enumvalue>
- <tp:enumvalue suffix="Send_Only" value="1">
- <tp:docstring>
- The local user has put the remote member on hold, so is sending
- media but has arranged not to receive any media streams.
- </tp:docstring>
- </tp:enumvalue>
- <tp:enumvalue suffix="Recv_Only" value="2">
- <tp:docstring>
- The user has been put on hold by the remote member, so is receiving
- media but has arranged not to send any media streams.
- </tp:docstring>
- </tp:enumvalue>
- <tp:enumvalue suffix="Both" value="3">
+
+ <interface name="org.freedesktop.Telepathy.Channel.Interface.Hold"
+ tp:causes-havoc='not yet API-stable'>
+ <tp:requires interface="org.freedesktop.Telepathy.Channel.Type.StreamedMedia"/>
+
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ <p>Interface for channels where you or other members may put
+ the channel on hold. This only makes sense for channels where
+ you are streaming media to or from the members.</p>
+
+ <p>If you are placed on hold, this indicates that some or all members
+ of the channel will no longer be receiving media streams from you.
+ If the channel has the MediaSignalling interface, client applications
+ should stop sending media to all members of the channel.</p>
+
+ <p>Depending on the protocol, it might not be possible to tell that
+ you're on hold, in which case the connection manager should always
+ indicate that you're not on hold unless it finds out otherwise.</p>
+
+ <p>If you place a channel on hold, this indicates that you do not wish
+ to be sent media streams by any of its members and will be ignoring
+ any media streams you continue to receive. It also requests that the
+ connection manager free up any resources that are only needed for
+ an actively used channel (e.g. in a GSM or PBX call, it will be
+ necessary to place an active call on hold before you can start
+ another call).</p>
+ </tp:docstring>
+
+ <tp:enum name="Channel_Hold_State" type="u">
<tp:docstring>
- Both the local user and the remote member have agreed not to send
- any media streams to each other.
+ The possible hold states of a call.
</tp:docstring>
- </tp:enumvalue>
- </tp:enum>
- <interface name="org.freedesktop.Telepathy.Channel.Interface.Hold">
- <tp:requires interface="org.freedesktop.Telepathy.Channel"/>
- <method name="GetHoldState">
- <arg direction="in" name="member" type="u" tp:type="Contact_Handle">
+ <tp:enumvalue suffix="None" value="0">
<tp:docstring>
- The contact handle for a member of the channel
+ Neither the local user nor a remote member have placed the call on
+ hold.
</tp:docstring>
- </arg>
+ </tp:enumvalue>
+ <tp:enumvalue suffix="Local" value="1">
+ <tp:docstring>
+ The local user has put the call on hold.
+ </tp:docstring>
+ </tp:enumvalue>
+ <tp:enumvalue suffix="Remote" value="2">
+ <tp:docstring>
+ The call has been put on hold by a remote member.
+ </tp:docstring>
+ </tp:enumvalue>
+ <tp:enumvalue suffix="Both" value="3">
+ <tp:docstring>
+ The local user and a remote member have both placed the call
+ on hold.
+ </tp:docstring>
+ </tp:enumvalue>
+ </tp:enum>
+
+ <method name="GetHoldState">
<arg direction="out" type="u" tp:type="Channel_Hold_State">
<tp:docstring>
- The member's current hold state as one of the values of
- ChannelHoldState
+ The channel's current hold state
</tp:docstring>
</arg>
<tp:docstring>
- Given a member of the channel, return their current hold state.
+ Return the channel's current hold state.
</tp:docstring>
- <tp:possible-errors>
- <tp:error name="org.freedesktop.Telepathy.Error.Disconnected"/>
- <tp:error name="org.freedesktop.Telepathy.Error.InvalidHandle"/>
- </tp:possible-errors>
</method>
+
<signal name="HoldStateChanged">
- <arg name="member" type="u" tp:type="Contact_Handle">
- <tp:docstring>
- The integer handle of a member of the channel
- </tp:docstring>
- </arg>
<arg name="state" type="u" tp:type="Channel_Hold_State">
<tp:docstring>
An integer representing the new hold state
</tp:docstring>
</arg>
<tp:docstring>
- Emitted to indicate that the hold state (as defined in GetHoldState
- above) has changed for a member of this channel. This may occur as
- a consequence of you requesting a change with RequestHold, or the
- state changing as a result of a request from the remote member
- or another process.
+ Emitted to indicate that the hold state has changed for this channel.
+ This may occur as a consequence of you requesting a change with
+ RequestHold, or the state changing as a result of a request from a
+ remote member or another process.
</tp:docstring>
</signal>
+
<method name="RequestHold">
- <arg direction="in" name="member" type="u" tp:type="Contact_Handle">
- <tp:docstring>
- The contact handle for a member of the channel
- </tp:docstring>
- </arg>
<arg direction="in" name="hold" type="b">
<tp:docstring>
- A boolean indicating whether or not the user should be on hold
+ A boolean indicating whether or not the channel should be on hold
</tp:docstring>
</arg>
<tp:docstring>
- Request that a certain member be put on hold (be instructed not to send
+ Request that the channel be put on hold (be instructed not to send
any media streams to you) or be taken off hold. Success is indicated
- by the HoldStateChanged signal being emitted.
+ by the HoldStateChanged signal being emitted and by a successful
+ return from this method.
</tp:docstring>
<tp:possible-errors>
<tp:error name="org.freedesktop.Telepathy.Error.Disconnected"/>
<tp:error name="org.freedesktop.Telepathy.Error.NetworkError"/>
<tp:error name="org.freedesktop.Telepathy.Error.InvalidHandle"/>
+ <tp:error name="org.freedesktop.Telepathy.Error.NotAvailable"/>
</tp:possible-errors>
</method>
- <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
- <p>THIS INTERFACE IS DEPRECATED AND SHOULD NOT BE USED. Hold functionality
- should be added to the StreamedMedia channel in due course.</p>
- <p>Interface for channels where members may put you on hold, or you may put
- members on hold. This usually only makes sense for channels where you are
- streaming media to or from the members. Hold is defined as requesting
- that you are not sent any media streams by another, so these states
- indicate whether or not you are sending and receiving media streams
- to each member of the channel.</p>
- </tp:docstring>
</interface>
</node>
<!-- vim:set sw=2 sts=2 et ft=xml: -->
diff --git a/spec/Channel_Interface_Transfer.xml b/spec/Channel_Interface_Transfer.xml
index 94257a9..5165c9a 100644
--- a/spec/Channel_Interface_Transfer.xml
+++ b/spec/Channel_Interface_Transfer.xml
@@ -18,7 +18,8 @@ Lesser General Public License for more details.</p>
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.Transfer">
+ <interface name="org.freedesktop.Telepathy.Channel.Interface.Transfer"
+ tp:causes-havoc='not well-tested'>
<tp:requires interface="org.freedesktop.Telepathy.Channel"/>
<method name="Transfer">
<arg direction="in" name="member" type="u" tp:type="Contact_Handle">
diff --git a/spec/Channel_Type_Contact_Search.xml b/spec/Channel_Type_Contact_Search.xml
index 19e8aa0..f3c7fd6 100644
--- a/spec/Channel_Type_Contact_Search.xml
+++ b/spec/Channel_Type_Contact_Search.xml
@@ -18,7 +18,8 @@ Lesser General Public License for more details.</p>
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.ContactSearch">
+ <interface name="org.freedesktop.Telepathy.Channel.Type.ContactSearch"
+ tp:causes-havoc='not well-tested'>
<tp:requires interface="org.freedesktop.Telepathy.Channel"/>
<method name="GetSearchKeys">
<arg direction="out" type="s">
diff --git a/spec/Channel_Type_Room_List.xml b/spec/Channel_Type_Room_List.xml
index fdaf7ac..5b2de13 100644
--- a/spec/Channel_Type_Room_List.xml
+++ b/spec/Channel_Type_Room_List.xml
@@ -20,6 +20,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</tp:license>
<interface name="org.freedesktop.Telepathy.Channel.Type.RoomList">
<tp:requires interface="org.freedesktop.Telepathy.Channel"/>
+
+ <tp:struct name="Room_Info" array-name="Room_Info_List">
+ <tp:member type="u" tp:type="Room_Handle" name="Handle"/>
+ <tp:member type="s" tp:type="DBus_Interface" name="Channel_Type"/>
+ <tp:member type="a{sv}" tp:type="String_Variant_Map" name="Info"/>
+ </tp:struct>
+
<method name="GetListingRooms">
<arg direction="out" type="b">
<tp:docstring>
@@ -32,7 +39,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</tp:docstring>
</method>
<signal name="GotRooms">
- <arg name="rooms" type="a(usa{sv})">
+ <arg name="rooms" type="a(usa{sv})" tp:type="Room_Info[]">
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
An array of structs containing:
<ul>
diff --git a/spec/Channel_Type_Streamed_Media.xml b/spec/Channel_Type_Streamed_Media.xml
index b244433..d24f37f 100644
--- a/spec/Channel_Type_Streamed_Media.xml
+++ b/spec/Channel_Type_Streamed_Media.xml
@@ -71,7 +71,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</tp:flag>
</tp:flags>
<method name="ListStreams">
- <arg direction="out" type="a(uuuuuu)">
+ <arg direction="out" type="a(uuuuuu)" tp:type="Media_Stream_Info[]">
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
An array of structs containing:
<ul>
@@ -153,7 +153,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
An array of stream types (values of MediaStreamType)
</tp:docstring>
</arg>
- <arg direction="out" type="a(uuuuuu)">
+ <arg direction="out" type="a(uuuuuu)" tp:type="Media_Stream_Info[]">
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
An array of structs (in the same order as the given stream types)
containing:
@@ -334,6 +334,17 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</tp:docstring>
</tp:flag>
</tp:flags>
+
+ <tp:struct name="Media_Stream_Info" array-name="Media_Stream_Info_List">
+ <tp:member type="u" name="Identifier"/>
+ <tp:member type="u" tp:type="Contact_Handle" name="Contact"/>
+ <tp:member type="u" tp:type="Media_Stream_Type" name="Type"/>
+ <tp:member type="u" tp:type="Media_Stream_State" name="State"/>
+ <tp:member type="u" tp:type="Media_Stream_Direction" name="Direction"/>
+ <tp:member type="u" tp:type="Media_Stream_Pending_Send"
+ name="Pending_Send_Flags"/>
+ </tp:struct>
+
</interface>
</node>
<!-- vim:set sw=2 sts=2 et ft=xml: -->
diff --git a/spec/Channel_Type_Text.xml b/spec/Channel_Type_Text.xml
index 7216d78..b2e0c65 100644
--- a/spec/Channel_Type_Text.xml
+++ b/spec/Channel_Type_Text.xml
@@ -20,6 +20,22 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</tp:license>
<interface name="org.freedesktop.Telepathy.Channel.Type.Text">
<tp:requires interface="org.freedesktop.Telepathy.Channel"/>
+
+ <tp:struct name="Pending_Text_Message" array-name="Pending_Text_Message_List">
+ <tp:docstring>A struct (message ID, timestamp in seconds since
+ 1970-01-01 00:00 UTC, sender's handle, message type, flags, text)
+ representing a pending text message, as returned by ListPendingMessages
+ on the Text channel type. The arguments of the Received signal
+ also match this struct's signature.</tp:docstring>
+ <tp:member type="u" name="Message_ID"/>
+ <tp:member type="u" name="Unix_Timestamp"/>
+ <tp:member type="u" tp:type="Contact_Handle" name="Sender"/>
+ <tp:member type="u" tp:type="Channel_Text_Message_Type"
+ name="Message_Type"/>
+ <tp:member type="u" tp:type="Channel_Text_Message_Flags" name="Flags"/>
+ <tp:member type="s" name="Text"/>
+ </tp:struct>
+
<method name="AcknowledgePendingMessages">
<arg direction="in" name="ids" type="au">
<tp:docstring>
@@ -53,7 +69,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
If true, remove all messages from the queue
</tp:docstring>
</arg>
- <arg direction="out" type="a(uuuuus)">
+ <arg direction="out" type="a(uuuuus)" tp:type="Pending_Text_Message[]">
<tp:docstring>
An array of structs representing the pending queue. Each contains:
<ul>
@@ -84,7 +100,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
A numeric identifier for acknowledging the message
</tp:docstring>
</arg>
- <arg name="timestamp" type="u" tp:type="Timestamp">
+ <arg name="timestamp" type="u" tp:type="Unix_Timestamp">
<tp:docstring>
A Unix timestamp indicating when the message was received
</tp:docstring>
@@ -180,7 +196,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
One of the values of ChannelTextSendError
</tp:docstring>
</arg>
- <arg name="timestamp" type="u" tp:type="Timestamp">
+ <arg name="timestamp" type="u" tp:type="Unix_Timestamp">
<tp:docstring>
The Unix timestamp indicating when the message was sent
</tp:docstring>
@@ -201,7 +217,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</tp:docstring>
</signal>
<signal name="Sent">
- <arg name="timestamp" type="u" tp:type="Timestamp">
+ <arg name="timestamp" type="u" tp:type="Unix_Timestamp">
<tp:docstring>
Unix timestamp indicating when the message was sent
</tp:docstring>
@@ -322,7 +338,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
if it isn't known.
</tp:docstring>
</tp:property>
- <tp:property name="subject-timestamp" type="u" tp:type="Timestamp">
+ <tp:property name="subject-timestamp" type="u" tp:type="Unix_Timestamp">
<tp:docstring>
A unix timestamp indicating when the subject was last modified.
</tp:docstring>
diff --git a/spec/Channel_Type_Tubes.xml b/spec/Channel_Type_Tubes.xml
index efdb702..c0be619 100644
--- a/spec/Channel_Type_Tubes.xml
+++ b/spec/Channel_Type_Tubes.xml
@@ -18,7 +18,7 @@ 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.
</tp:license>
- <interface name="org.freedesktop.Telepathy.Channel.Type.Tubes" tp:name-const="CHANNEL_TYPE_TUBES">
+ <interface name="org.freedesktop.Telepathy.Channel.Type.Tubes">
<tp:requires interface="org.freedesktop.Telepathy.Channel"/>
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
<p>A "tube" is a mechanism for arbitrary data transfer. Two types of
@@ -37,7 +37,83 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Socket_Address_Type and the v is dependent on the type of address.</p>
</tp:docstring>
- <tp:enum name="Tube_Type">
+ <tp:simple-type name="Tube_ID" type="u">
+ <tp:docstring>An identifier for a tube. These are local to a Tubes
+ channel, and may not be assumed to be the same as the other
+ participants' idea of the tube identifier.</tp:docstring>
+ </tp:simple-type>
+
+ <tp:struct name="Tube_Info" array-name="Tube_Info_List">
+ <tp:docstring>A struct (tube ID, initiator handle, tube type,
+ service name, parameters, state) representing a tube, as returned
+ by ListTubes on the Tubes channel type.</tp:docstring>
+ <tp:member type="u" name="Tube_ID"/>
+ <tp:member type="u" tp:type="Contact_Handle" name="Initiator"/>
+ <tp:member type="u" tp:type="Tube_Type" name="Type"/>
+ <tp:member type="s" name="Service"/>
+ <tp:member type="a{sv}" tp:type="String_Variant_Map" name="Parameters"/>
+ <tp:member type="u" tp:type="Tube_State" name="State"/>
+ </tp:struct>
+
+ <tp:struct name="DBus_Tube_Member" array-name="DBus_Tube_Member_List">
+ <tp:docstring>A struct (handle, unique name) representing a participant
+ in a D-Bus tube, as returned by GetDBusNames on the Tubes channel
+ type, and as seen in the DBusNamesChanged signal.</tp:docstring>
+ <tp:member type="u" tp:type="Contact_Handle" name="Handle"/>
+ <tp:member type="s" tp:type="DBus_Unique_Name" name="Unique_Name"/>
+ </tp:struct>
+
+ <tp:struct name="Socket_Address_IPv4">
+ <tp:docstring>An IPv4 address and port.</tp:docstring>
+ <tp:member type="s" name="Address">
+ <tp:docstring>A dotted-quad IPv4 address literal: four ASCII decimal
+ numbers, each between 0 and 255 inclusive, e.g.
+ "192.168.0.1".</tp:docstring>
+ </tp:member>
+ <tp:member type="q" name="Port">
+ <tp:docstring>The TCP or UDP port number.</tp:docstring>
+ </tp:member>
+ </tp:struct>
+
+ <tp:struct name="Socket_Address_IPv6">
+ <tp:docstring>An IPv6 address and port.</tp:docstring>
+ <tp:member type="s" name="Address">
+ <tp:docstring>An IPv6 address literal as specified by RFC2373
+ section 2.2, e.g. "2001:DB8::8:800:200C:4171".</tp:docstring>
+ </tp:member>
+ <tp:member type="q" name="Port">
+ <tp:docstring>The TCP or UDP port number.</tp:docstring>
+ </tp:member>
+ </tp:struct>
+
+ <tp:struct name="Socket_Netmask_IPv4">
+ <tp:docstring>An IPv4 network or subnet.</tp:docstring>
+ <tp:member type="s" name="Address">
+ <tp:docstring>A dotted-quad IPv4 address literal: four ASCII decimal
+ numbers, each between 0 and 255 inclusive, e.g.
+ "192.168.0.1".</tp:docstring>
+ </tp:member>
+ <tp:member type="y" name="Prefix_Length">
+ <tp:docstring>The number of leading bits of the address that must
+ match, for this netmask to be considered to match an
+ address.</tp:docstring>
+ </tp:member>
+ </tp:struct>
+
+ <tp:struct name="Socket_Netmask_IPv6">
+ <tp:docstring>An IPv6 network or subnet.</tp:docstring>
+ <tp:member type="s" name="Address">
+ <tp:docstring>An IPv6 address literal as specified by RFC2373
+ section 2.2, e.g. "2001:DB8::8:800:200C:4171".</tp:docstring>
+ </tp:member>
+ <tp:member type="y" name="Prefix_Length">
+ <tp:docstring>The number of leading bits of the address that must
+ match, for this netmask to be considered to match an
+ address.</tp:docstring>
+ </tp:member>
+ </tp:struct>
+
+ <tp:enum name="Tube_Type" type="u">
<tp:enumvalue suffix="DBus" value="0">
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
<p>An ordered reliable transport, for transporting D-Bus
@@ -86,7 +162,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
</tp:enumvalue>
</tp:enum>
- <tp:enum name="Tube_State">
+ <tp:enum name="Tube_State" type="u">
<tp:enumvalue suffix="Local_Pending" value="0">
<tp:docstring>
The tube is waiting to be accepted/closed locally.
@@ -104,7 +180,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
</tp:enumvalue>
</tp:enum>
- <tp:enum name="Socket_Address_Type">
+ <tp:enum name="Socket_Address_Type" type="u">
<tp:enumvalue suffix="Unix" value="0">
<tp:docstring>
A Unix socket. The variant contains a byte-array, signature 'ay',
@@ -122,7 +198,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<tp:enumvalue suffix="IPv4" value="2">
<tp:docstring>
- An IPv4 socket. The variant contains a struct with signature (sq)
+ An IPv4 socket. The variant contains a Socket_Address_IPv4,
+ i.e. a structure with signature (sq)
in which the string is an IPv4 dotted-quad address literal
(and must not be a DNS name), while the 16-bit unsigned integer is
the port number.
@@ -131,7 +208,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<tp:enumvalue suffix="IPv6" value="3">
<tp:docstring>
- An IPv6 socket. The variant contains a struct with signature (sq)
+ An IPv6 socket. The variant contains a Socket_Address_IPv6,
+ i.e. a structure with signature (sq)
in which the string is an IPv6 address literal as specified in
RFC2373 (and must not be a DNS name), while the 16-bit unsigned
integer is the port number.
@@ -140,7 +218,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
</tp:enum>
- <tp:enum name="Socket_Access_Control">
+ <tp:enum name="Socket_Access_Control" type="u">
<tp:enumvalue suffix="Localhost" value="0">
<tp:docstring>
The IP or Unix socket can be accessed by any local user (e.g.
@@ -152,16 +230,18 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<tp:enumvalue suffix="Port" value="1">
<tp:docstring>
May only be used on IP sockets. The associated variant must contain
- a struct with signature (sq) containing the string form of an
- IP address of the appropriate version, and a port number.
- The socket can only be accessed if the connecting process has that
- address and port number; all other connections will be rejected.
+ a struct Socket_Address_IPv4 (or Socket_Address_IPv6)
+ containing the string form of an IP address of the appropriate
+ version, and a port number. The socket can only be accessed if the
+ connecting process has that address and port number; all other
+ connections will be rejected.
</tp:docstring>
</tp:enumvalue>
<tp:enumvalue suffix="Netmask" value="2">
<tp:docstring>
May only be used on IP sockets. The associated variant must contain
- a struct with signature (sy) containing the string form of an
+ a struct Socket_Netmask_IPv4 (or Socket_Netmask_IPv6) with
+ signature (sy), containing the string form of an
IP address of the appropriate version, and a prefix length "n".
The socket can only be accessed if the first n bits of the
connecting address match the first n bits of the given address.
@@ -185,10 +265,18 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
</tp:enumvalue>
</tp:enum>
+ <tp:mapping name="Supported_Socket_Map">
+ <tp:docstring>The supported socket address and access-control types
+ for tubes. See GetAvailableStreamTubeTypes.</tp:docstring>
+ <tp:member name="Address_Type" type="u" tp:type="Socket_Address_Type"/>
+ <tp:member name="Access_Control" type="au"
+ tp:type="Socket_Access_Control[]"/>
+ </tp:mapping>
+
<method name="GetAvailableStreamTubeTypes">
<tp:docstring>List the available address types and access-control types
for stream tubes.</tp:docstring>
- <arg direction="out" type="a{uau}">
+ <arg direction="out" type="a{uau}" tp:type="Supported_Socket_Map">
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
<p>A mapping from address types (members of Socket_Address_Type) to
arrays of access-control type (members of Socket_Access_Control)
@@ -224,7 +312,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
</method>
<method name="ListTubes">
- <arg direction="out" type="a(uuusa{sv}u)">
+ <arg direction="out" type="a(uuusa{sv}u)" tp:type="Tube_Info[]">
<tp:docstring>
Return an array of tuples, each representing a tube, with the
following members:
@@ -253,7 +341,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
com.example.ServiceName.
</tp:docstring>
</arg>
- <arg direction="in" name="parameters" type="a{sv}">
+ <arg direction="in" name="parameters" type="a{sv}"
+ tp:type="String_Variant_Map">
<tp:docstring>
A dictionary of properties for the new tube; the allowable keys,
types and values are defined by the service. Connection managers
@@ -296,7 +385,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
"rsync" or "daap".
</tp:docstring>
</arg>
- <arg direction="in" name="parameters" type="a{sv}">
+ <arg direction="in" name="parameters" type="a{sv}"
+ tp:type="String_Variant_Map">
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
<p>A dictionary of properties for the new tube; the allowable keys,
types and values are defined by the service. Connection managers
@@ -357,7 +447,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<tp:docstring>
Emitted when a tube is created.
</tp:docstring>
- <arg name="id" type="u">
+ <arg name="id" type="u" tp:type="Tube_ID">
<tp:docstring>
The ID of the new tube.
</tp:docstring>
@@ -377,7 +467,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
A string representing the service that will be used over the tube.
</tp:docstring>
</arg>
- <arg name="parameters" type="a{sv}">
+ <arg name="parameters" type="a{sv}" tp:type="String_Variant_Map">
<tp:docstring>
The new tube's properties.
</tp:docstring>
@@ -396,7 +486,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
the "local pending" state until the TubeStateChanged signal is
emitted.
</tp:docstring>
- <arg direction="in" name="id" type="u">
+ <arg direction="in" name="id" type="u" tp:type="Tube_ID">
<tp:docstring>
The ID of the tube to accept.
</tp:docstring>
@@ -424,7 +514,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
the "local pending" state until the TubeStateChanged signal is
emitted.
</tp:docstring>
- <arg direction="in" name="id" type="u">
+ <arg direction="in" name="id" type="u" tp:type="Tube_ID">
<tp:docstring>
The ID of the tube to accept.
</tp:docstring>
@@ -473,7 +563,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<tp:docstring>
Emitted when the state of a tube changes.
</tp:docstring>
- <arg name="id" type="u">
+ <arg name="id" type="u" tp:type="Tube_ID">
<tp:docstring>
The ID of the tube that changed state.
</tp:docstring>
@@ -489,7 +579,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<tp:docstring>
Close a tube.
</tp:docstring>
- <arg direction="in" name="id" type="u">
+ <arg direction="in" name="id" type="u" tp:type="Tube_ID">
<tp:docstring>
The ID of the tube to close.
</tp:docstring>
@@ -504,7 +594,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Emitted when a tube has been closed. The ID of a closed tube is no
longer valid. The ID may later be reused for a new tube.
</tp:docstring>
- <arg name="id" type="u">
+ <arg name="id" type="u" tp:type="Tube_ID">
<tp:docstring>
The ID of the tube that was closed.
</tp:docstring>
@@ -516,7 +606,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
For a D-Bus tube, return a string describing the address of the
private bus.
</tp:docstring>
- <arg direction="in" name="id" type="u">
+ <arg direction="in" name="id" type="u" tp:type="Tube_ID">
<tp:docstring>
The ID of the tube to get an address for.
</tp:docstring>
@@ -545,12 +635,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
For a multi-user (i.e. Handle_Type_Room) D-Bus tube, obtain a mapping
between contact handles and their unique bus names on this tube.
</tp:docstring>
- <arg direction="in" name="id" type="u">
+ <arg direction="in" name="id" type="u" tp:type="Tube_ID">
<tp:docstring>
The ID of the tube to get names for.
</tp:docstring>
</arg>
- <arg direction="out" type="a(us)">
+ <arg direction="out" type="a(us)" tp:type="DBus_Tube_Member[]">
<tp:docstring>
An array of structures, each containing a contact handle and a D-Bus
bus name.
@@ -575,12 +665,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Emitted on a multi-user (i.e. Handle_Type_Room) D-Bus tube when a
participant opens or closes the tube.
</tp:docstring>
- <arg name="id" type="u">
+ <arg name="id" type="u" tp:type="Tube_ID">
<tp:docstring>
The ID of the tube whose names have changed.
</tp:docstring>
</arg>
- <arg name="added" type="a(us)">
+ <arg name="added" type="a(us)" tp:type="DBus_Tube_Member[]">
<tp:docstring>
Array of handles and D-Bus names of new participants.
</tp:docstring>
@@ -597,7 +687,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
For a stream tube, obtain the address of the socket used to
communicate over this tube.
</tp:docstring>
- <arg direction="in" name="id" type="u">
+ <arg direction="in" name="id" type="u" tp:type="Tube_ID">
<tp:docstring>
The ID of the stream tube to get the socket for.
</tp:docstring>
@@ -633,7 +723,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Emitted on a stream tube when a participant opens a new connection
to its socket.
</tp:docstring>
- <arg name="id" type="u">
+ <arg name="id" type="u" tp:type="Tube_ID">
<tp:docstring>
The ID of the tube
</tp:docstring>
diff --git a/spec/Connection.xml b/spec/Connection.xml
index a7ed81e..d703ec3 100644
--- a/spec/Connection.xml
+++ b/spec/Connection.xml
@@ -21,6 +21,27 @@ 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.Connection">
+
+ <tp:struct name="Channel_Info" array-name="Channel_Info_List">
+ <tp:docstring>A struct representing a channel, as returned by
+ ListChannels on the Connection interface.</tp:docstring>
+ <tp:member type="o" name="Channel">
+ <tp:docstring>The object path of the channel, which is on the
+ same bus name as the connection</tp:docstring>
+ </tp:member>
+ <tp:member type="s" tp:type="DBus_Interface" name="Channel_Type">
+ <tp:docstring>The channel's type</tp:docstring>
+ </tp:member>
+ <tp:member type="u" tp:type="Handle_Type" name="Handle_Type">
+ <tp:docstring>The type of the handle that the channel communicates
+ with, or 0 if there is no associated handle</tp:docstring>
+ </tp:member>
+ <tp:member type="u" tp:type="Handle" name="Handle">
+ <tp:docstring>The handle that the channel communicates with,
+ or 0 if there is no associated handle</tp:docstring>
+ </tp:member>
+ </tp:struct>
+
<method name="Connect">
<tp:docstring>
Request that the connection be established. This will be done
@@ -41,7 +62,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</tp:docstring>
</method>
<method name="GetInterfaces">
- <arg direction="out" type="as" tp:type="Interface[]">
+ <arg direction="out" type="as" tp:type="DBus_Interface[]">
<tp:docstring>
An array of D-Bus interface names
</tp:docstring>
@@ -92,7 +113,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
<method name="HoldHandles">
<arg direction="in" name="handle_type" type="u" tp:type="Handle_Type">
<tp:docstring>
- An integer handle type (as defined in HandleType)
+ The type of handle to be held
</tp:docstring>
</arg>
<arg direction="in" name="handles" type="au" tp:type="Handle[]">
@@ -130,7 +151,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
<method name="InspectHandles">
<arg direction="in" name="handle_type" type="u" tp:type="Handle_Type">
<tp:docstring>
- An integer handle type (as defined in HandleType)
+ The type of handle to be inspected
</tp:docstring>
</arg>
<arg direction="in" name="handles" type="au" tp:type="Handle[]">
@@ -158,15 +179,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</tp:possible-errors>
</method>
<method name="ListChannels">
- <arg direction="out" type="a(osuu)">
- <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
- <p>An array of structs containing:</p>
- <ul>
- <li>a D-Bus object path for the channel object on this service</li>
- <li>a D-Bus interface name representing the channel type</li>
- <li>an integer representing the handle type this channel communicates with, or zero</li>
- <li>an integer handle representing the contact, room or list this channel communicates with, or zero</li>
- </ul>
+ <arg direction="out" type="a(osuu)" tp:type="Channel_Info[]">
+ <tp:docstring>
+ An array of structs representing channels.
</tp:docstring>
</arg>
<tp:docstring>
@@ -182,7 +197,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
A D-Bus object path for the channel object on this service
</tp:docstring>
</arg>
- <arg name="channel_type" type="s" tp:type="Interface">
+ <arg name="channel_type" type="s" tp:type="DBus_Interface">
<tp:docstring>
A D-Bus interface name representing the channel type
</tp:docstring>
@@ -240,7 +255,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</tp:possible-errors>
</method>
<method name="RequestChannel">
- <arg direction="in" name="type" type="s" tp:type="Interface">
+ <arg direction="in" name="type" type="s" tp:type="DBus_Interface">
<tp:docstring>
A D-Bus interface name representing base channel type
</tp:docstring>
@@ -352,7 +367,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
<method name="RequestHandles">
<arg direction="in" name="handle_type" type="u" tp:type="Handle_Type">
<tp:docstring>
- An integer handle type (as defined in HandleType)
+ The type of handle required
</tp:docstring>
</arg>
<arg direction="in" name="names" type="as">
diff --git a/spec/Connection_Interface_Aliasing.xml b/spec/Connection_Interface_Aliasing.xml
index 99dd10a..900a8b2 100644
--- a/spec/Connection_Interface_Aliasing.xml
+++ b/spec/Connection_Interface_Aliasing.xml
@@ -20,8 +20,24 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</tp:license>
<interface name="org.freedesktop.Telepathy.Connection.Interface.Aliasing">
<tp:requires interface="org.freedesktop.Telepathy.Connection"/>
+
+ <tp:mapping name="Alias_Map" array-name="">
+ <tp:docstring>A dictionary whose keys are contact handles and whose
+ values are aliases.</tp:docstring>
+ <tp:member type="u" tp:type="Contact_Handle" name="Handle"/>
+ <tp:member type="s" name="Alias"/>
+ </tp:mapping>
+
+ <tp:struct name="Alias_Pair" array-name="Alias_Pair_List">
+ <tp:docstring>A pair (contact handle, alias) as seen in the AliasesChanged
+ signal.</tp:docstring>
+ <tp:member type="u" tp:type="Contact_Handle" name="Handle"/>
+ <tp:member type="s" name="Alias"/>
+ </tp:struct>
+
<signal name="AliasesChanged">
- <arg name="aliases" type="a(us)">
+ <arg name="aliases" type="a(us)" tp:type="Alias_Pair[]">
+ <!-- FIXME: if we break API, this could be an Alias_Map, a{us} -->
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
An array containing structs of:
<ul>
@@ -88,7 +104,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</tp:possible-errors>
</method>
<method name="SetAliases">
- <arg direction="in" name="aliases" type="a{us}">
+ <arg direction="in" name="aliases" type="a{us}" tp:type="Alias_Map">
<tp:docstring>
A dictionary mapping integer handles of contacts
to strings of the new alias to set.
diff --git a/spec/Connection_Interface_Avatars.xml b/spec/Connection_Interface_Avatars.xml
index fafa68b..33f6f68 100644
--- a/spec/Connection_Interface_Avatars.xml
+++ b/spec/Connection_Interface_Avatars.xml
@@ -20,6 +20,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</tp:license>
<interface name="org.freedesktop.Telepathy.Connection.Interface.Avatars">
<tp:requires interface="org.freedesktop.Telepathy.Connection"/>
+
+ <tp:mapping name="Avatar_Token_Map" array-name="">
+ <tp:docstring>A dictionary whose keys are contact handles and whose
+ values are avatar tokens.</tp:docstring>
+ <tp:member type="u" tp:type="Contact_Handle" name="Handle"/>
+ <tp:member type="s" name="Token"/>
+ </tp:mapping>
+
<signal name="AvatarUpdated">
<arg name="contact" type="u" tp:type="Contact_Handle">
<tp:docstring>
@@ -137,7 +145,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
An array of handles representing contacts
</tp:docstring>
</arg>
- <arg direction="out" type="a{us}">
+ <arg direction="out" type="a{us}" tp:type="Avatar_Token_Map">
<tp:docstring>
A dictionary of handles mapped to avatar tokens, containing only
the known avatar tokens.
@@ -146,8 +154,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
<tp:docstring>
Get the unique tokens for the given contacts' avatars. These tokens
can be persisted across connections, and should be used by the client
- to check whether the avatars have been updated. A empty token means
- that no avatar is set for the given contact.
+ to check whether the avatars have been updated. A CM must always have
+ the tokens for the self handle if one is set (even if it is set to no
+ avatar). Otherwise, only tokens that are already known or that can be
+ discovered without retrieving the complete avatar are returned. An
+ empty token means the given contact has no avatar.
</tp:docstring>
<tp:possible-errors>
<tp:error name="org.freedesktop.Telepathy.Error.Disconnected"/>
@@ -258,9 +269,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
a changed token implies the contact's avatar has changed, but the strings
should otherwise be considered opaque by clients.</p>
- <p>A client should use GetAvatarTokens to request the tokens for the avatars
- of all the contacts it is interested in when it connects. The avatars can
- then be retreived using RequestAvatar for the corresponding contact.
+ <p>A client should use GetKnownAvatarTokens to request the tokens for the
+ avatars of all the contacts it is interested in when it connects. The
+ avatars can then be requested using RequestAvatars for the contacts.
Clients should bind to the AvatarChanged signal and request a new copy of
the avatar when a contacts' avatar token changes. Clients should cache the
token and data of each contact's avatar between connections, to avoid
diff --git a/spec/Connection_Interface_Capabilities.xml b/spec/Connection_Interface_Capabilities.xml
index 36153b0..874f07c 100644
--- a/spec/Connection_Interface_Capabilities.xml
+++ b/spec/Connection_Interface_Capabilities.xml
@@ -20,8 +20,43 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</tp:license>
<interface name="org.freedesktop.Telepathy.Connection.Interface.Capabilities">
<tp:requires interface="org.freedesktop.Telepathy.Connection"/>
+
+ <tp:struct name="Capability_Pair" array-name="Capability_Pair_List">
+ <tp:docstring>A pair (channel type, type-specific flags) as passed to
+ AdvertiseCapabilities on the Capabilities interface.</tp:docstring>
+ <tp:member type="s" tp:type="DBus_Interface" name="Channel_Type"/>
+ <tp:member type="u" name="Type_Specific_Flags"/>
+ </tp:struct>
+
+ <tp:struct name="Contact_Capability" array-name="Contact_Capability_List">
+ <tp:docstring>A struct (contact handle, channel type, generic flags,
+ type-specific flags) representing a capability posessed by a contact,
+ as returned by GetCapabilities on the Capabilities
+ interface.</tp:docstring>
+ <tp:member type="u" tp:type="Contact_Handle" name="Handle"/>
+ <tp:member type="s" tp:type="DBus_Interface" name="Channel_Type"/>
+ <tp:member type="u" tp:type="Connection_Capability_Flags"
+ name="Generic_Flags"/>
+ <tp:member type="u" name="Type_Specific_Flags"/>
+ </tp:struct>
+
+ <tp:struct name="Capability_Change" array-name="Capability_Change_List">
+ <tp:docstring>A struct (contact handle, channel type, old generic flags,
+ new generic flags, old type-specific flags, new type-specific flags)
+ representing a change to one of a contact's capabilities, as seen in the
+ CapabilitiesChanged signal on the Capabilities interface.</tp:docstring>
+ <tp:member type="u" tp:type="Contact_Handle" name="Handle"/>
+ <tp:member type="s" tp:type="DBus_Interface" name="Channel_Type"/>
+ <tp:member type="u" tp:type="Connection_Capability_Flags"
+ name="Old_Generic_Flags"/>
+ <tp:member type="u" tp:type="Connection_Capability_Flags"
+ name="New_Generic_Flags"/>
+ <tp:member type="u" name="Old_Type_Specific_Flags"/>
+ <tp:member type="u" name="New_Type_Specific_Flags"/>
+ </tp:struct>
+
<method name="AdvertiseCapabilities">
- <arg direction="in" name="add" type="a(su)">
+ <arg direction="in" name="add" type="a(su)" tp:type="Capability_Pair[]">
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
An array of structures containing:
<ul>
@@ -30,12 +65,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</ul>
</tp:docstring>
</arg>
- <arg direction="in" name="remove" type="as" tp:type="Interface[]">
+ <arg direction="in" name="remove" type="as" tp:type="DBus_Interface[]">
<tp:docstring>
An array of D-Bus interface names of channel types to remove
</tp:docstring>
</arg>
- <arg direction="out" type="a(su)">
+ <arg direction="out" type="a(su)" tp:type="Capability_Pair[]">
<tp:docstring>
An array of structures describing the current capabilities containing:
<ul>
@@ -69,7 +104,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</tp:possible-errors>
</method>
<signal name="CapabilitiesChanged">
- <arg name="caps" type="a(usuuuu)">
+ <arg name="caps" type="a(usuuuu)" tp:type="Capability_Change[]">
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
An array of structures containing:
<ul>
@@ -93,7 +128,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
An array of contact handles for this connection, or zero to query capabilities available on the connection itself
</tp:docstring>
</arg>
- <arg direction="out" type="a(usuu)">
+ <arg direction="out" type="a(usuu)" tp:type="Contact_Capability[]">
<tp:docstring>
An array of structures containing:
<ul>
diff --git a/spec/Connection_Interface_Contact_Info.xml b/spec/Connection_Interface_Contact_Info.xml
index 3582da3..22cd507 100644
--- a/spec/Connection_Interface_Contact_Info.xml
+++ b/spec/Connection_Interface_Contact_Info.xml
@@ -18,7 +18,8 @@ Lesser General Public License for more details.</p>
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.Connection.Interface.ContactInfo">
+ <interface name="org.freedesktop.Telepathy.Connection.Interface.ContactInfo"
+ tp:causes-havoc='obsolete'>
<tp:requires interface="org.freedesktop.Telepathy.Connection"/>
<signal name="GotContactInfo">
<arg name="contact" type="u" tp:type="Contact_Handle">
diff --git a/spec/Connection_Interface_Forwarding.xml b/spec/Connection_Interface_Forwarding.xml
index 119c9be..6322fbc 100644
--- a/spec/Connection_Interface_Forwarding.xml
+++ b/spec/Connection_Interface_Forwarding.xml
@@ -18,7 +18,8 @@ Lesser General Public License for more details.</p>
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.Connection.Interface.Forwarding">
+ <interface name="org.freedesktop.Telepathy.Connection.Interface.Forwarding"
+ tp:causes-havoc='not well-tested'>
<tp:requires interface="org.freedesktop.Telepathy.Connection"/>
<signal name="ForwardingChanged">
<arg name="forward_to" type="u" tp:type="Contact_Handle">
diff --git a/spec/Connection_Interface_Presence.xml b/spec/Connection_Interface_Presence.xml
index e43c727..37653ee 100644
--- a/spec/Connection_Interface_Presence.xml
+++ b/spec/Connection_Interface_Presence.xml
@@ -26,13 +26,50 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</tp:license>
<interface name="org.freedesktop.Telepathy.Connection.Interface.Presence">
<tp:requires interface="org.freedesktop.Telepathy.Connection"/>
+
+ <!-- We hope to simplify these eventually -->
+ <tp:mapping name="Multiple_Status_Map">
+ <tp:docstring>Mapping used in Last_Activity_And_Statuses and passed to
+ SetStatus, representing a collection of statuses. Use of this mapping
+ with more than one member is deprecated.</tp:docstring>
+ <tp:member type="s" name="Status"/>
+ <tp:member type="a{sv}" tp:type="String_Variant_Map" name="Parameters"/>
+ </tp:mapping>
+ <tp:struct name="Last_Activity_And_Statuses" array-name="">
+ <tp:docstring>Structure representing a contact's presence, containing
+ a last-activity time (deprecated) and a Multiple_Status_Map.
+ </tp:docstring>
+ <tp:member type="u" tp:type="Unix_Timestamp" name="Last_Activity"/>
+ <tp:member type="a{sa{sv}}" tp:type="Multiple_Status_Map"
+ name="Statuses"/>
+ </tp:struct>
+ <tp:mapping name="Contact_Presences">
+ <tp:docstring>Mapping returned by GetPresence and signalled by
+ PresenceUpdate, where the keys are contacts and the values represent
+ their presences.</tp:docstring>
+ <tp:member type="u" tp:type="Contact_Handle" name="Contact"/>
+ <tp:member type="(ua{sa{sv}})" tp:type="Last_Activity_And_Statuses"
+ name="Presence"/>
+ </tp:mapping>
+ <tp:struct name="Status_Spec" array-name="">
+ <tp:member type="u" tp:type="Connection_Presence_Type" name="Type"/>
+ <tp:member type="b" name="May_Set_On_Self"/>
+ <tp:member type="b" name="Exclusive"/>
+ <tp:member type="a{ss}" tp:type="String_String_Map"
+ name="Parameter_Types"/>
+ </tp:struct>
+ <tp:mapping name="Status_Spec_Map">
+ <tp:member type="s" name="Identifier"/>
+ <tp:member type="(ubba{ss})" tp:type="Status_Spec" name="Spec"/>
+ </tp:mapping>
+
<method name="AddStatus">
<arg direction="in" name="status" type="s">
<tp:docstring>
The string identifier of the desired status
</tp:docstring>
</arg>
- <arg direction="in" name="parms" type="a{sv}">
+ <arg direction="in" name="parms" type="a{sv}" tp:type="String_Variant_Map">
<tp:docstring>
A dictionary of optional parameter names mapped to their variant-boxed values
</tp:docstring>
@@ -69,7 +106,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
An array of the contacts whose presence should be obtained
</tp:docstring>
</arg>
- <arg direction="out" name="presence" type="a{u(ua{sa{sv}})}">
+ <arg direction="out" name="presence" type="a{u(ua{sa{sv}})}"
+ tp:type="Contact_Presences">
<tp:docstring>
Presence information in the same format as for the PresenceUpdate
signal
@@ -89,7 +127,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</tp:possible-errors>
</method>
<method name="GetStatuses">
- <arg direction="out" type="a{s(ubba{ss})}">
+ <arg direction="out" type="a{s(ubba{ss})}" tp:type="Status_Spec_Map">
<tp:docstring>
A dictionary of string identifiers mapped to a struct for each status, containing:
<ul>
@@ -111,7 +149,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</tp:possible-errors>
</method>
<signal name="PresenceUpdate">
- <arg name="presence" type="a{u(ua{sa{sv}})}">
+ <arg name="presence" type="a{u(ua{sa{sv}})}" tp:type="Contact_Presences">
<tp:docstring>
A dictionary of contact handles mapped to a struct containing
a UNIX timestamp of the last activity time (in UTC), and
@@ -174,7 +212,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</tp:possible-errors>
</method>
<method name="SetLastActivityTime">
- <arg direction="in" name="time" type="u" tp:type="Timestamp">
+ <arg direction="in" name="time" type="u" tp:type="Unix_Timestamp">
<tp:docstring>
A UNIX timestamp of the user's last activity time (in UTC)
</tp:docstring>
@@ -194,7 +232,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</tp:possible-errors>
</method>
<method name="SetStatus">
- <arg direction="in" name="statuses" type="a{sa{sv}}">
+ <arg direction="in" name="statuses" type="a{sa{sv}}" tp:type="Multiple_Status_Map">
<tp:docstring>
A dictionary mapping status identifiers to dictionaries, which
map optional parameter names to their variant-boxed values
@@ -307,6 +345,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
Hidden (invisible)
</tp:docstring>
</tp:enumvalue>
+ <tp:enumvalue suffix="Busy" value="6">
+ <tp:docstring>
+ Busy, Do Not Disturb.
+ </tp:docstring>
+ </tp:enumvalue>
</tp:enum>
</interface>
</node>
diff --git a/spec/Connection_Interface_Privacy.xml b/spec/Connection_Interface_Privacy.xml
index 5cb81a0..4ada369 100644
--- a/spec/Connection_Interface_Privacy.xml
+++ b/spec/Connection_Interface_Privacy.xml
@@ -18,7 +18,8 @@ Lesser General Public License for more details.</p>
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.Connection.Interface.Privacy">
+ <interface name="org.freedesktop.Telepathy.Connection.Interface.Privacy"
+ tp:causes-havoc='not well-tested'>
<tp:requires interface="org.freedesktop.Telepathy.Connection"/>
<method name="GetPrivacyMode">
<arg direction="out" type="s">
diff --git a/spec/Connection_Interface_Renaming.xml b/spec/Connection_Interface_Renaming.xml
index f1c5497..2c4e272 100644
--- a/spec/Connection_Interface_Renaming.xml
+++ b/spec/Connection_Interface_Renaming.xml
@@ -18,7 +18,8 @@ Lesser General Public License for more details.</p>
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.Connection.Interface.Renaming">
+ <interface name="org.freedesktop.Telepathy.Connection.Interface.Renaming"
+ tp:causes-havoc='not well-tested'>
<tp:requires interface="org.freedesktop.Telepathy.Connection"/>
<signal name="Renamed">
<arg name="original" type="u" tp:type="Contact_Handle">
diff --git a/spec/Connection_Manager.xml b/spec/Connection_Manager.xml
index 5d5e6cb..5d3aef3 100644
--- a/spec/Connection_Manager.xml
+++ b/spec/Connection_Manager.xml
@@ -19,6 +19,56 @@ 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.ConnectionManager">
+
+ <tp:simple-type name="Protocol" type="s">
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ <p>An instant messaging protocol. It must consist only of ASCII
+ letters, digits and hyphen/minus signs (U+002D "-"), and must start
+ with a letter. Where possible, this SHOULD be
+ chosen from the following well-known values:</p>
+
+ <ul>
+ <li>aim - AOL Instant Messenger (OSCAR or TOC)</li>
+ <li>gadugadu - Gadu-Gadu</li>
+ <li>groupwise - Novell Groupwise</li>
+ <li>icq - ICQ (OSCAR)</li>
+ <li>irc - Internet Relay Chat (RFC 1459, 2810-2813)</li>
+ <li>jabber - XMPP (RFC 3920, 3921) or Jabber</li>
+ <li>local-xmpp - Link-local XMPP (XEP-0174) (Bonjour, Salut)</li>
+ <li>msn - MSNP (Windows Live Messenger)</li>
+ <li>myspace - MySpaceIM</li>
+ <li>napster - Napster</li>
+ <li>qq - Tencent QQ</li>
+ <li>sametime - IBM Lotus Sametime</li>
+ <li>silc - SILC</li>
+ <li>sip - Session Initiation Protocol (SIP)</li>
+ <li>trepia - Trepia</li>
+ <li>yahoo - YMSG (Yahoo! Messenger)</li>
+ <li>zephyr - Zephyr</li>
+ </ul>
+ </tp:docstring>
+ </tp:simple-type>
+
+ <tp:struct name="Param_Spec" array-name="Param_Spec_List">
+ <tp:docstring>A struct representing an allowed parameter, as returned
+ by GetParameters on the ConnectionManager interface.</tp:docstring>
+ <tp:member type="s" name="Name">
+ <tp:docstring>A string parameter name</tp:docstring>
+ </tp:member>
+ <tp:member type="u" tp:type="Conn_Mgr_Param_Flags" name="Flags">
+ <tp:docstring>A bitwise OR of the parameter flags</tp:docstring>
+ </tp:member>
+ <tp:member type="s" tp:type="DBus_Signature" name="Signature">
+ <tp:docstring>A string containing the D-Bus type signature
+ for this parameter</tp:docstring>
+ </tp:member>
+ <tp:member type="v" name="Default_Value">
+ <tp:docstring>The default value (if the Has_Default flag is not
+ present, there is no default and this takes some dummy value,
+ which SHOULD be of the appropriate D-Bus type)</tp:docstring>
+ </tp:member>
+ </tp:struct>
+
<tp:flags name="Conn_Mgr_Param_Flags" value-prefix="Conn_Mgr_Param_Flag" type="u">
<tp:flag suffix="Required" value="1">
<tp:docstring>
@@ -40,21 +90,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</tp:flag>
</tp:flags>
<method name="GetParameters">
- <arg direction="in" name="proto" type="s">
+ <arg direction="in" name="proto" type="s" tp:type="Protocol">
<tp:docstring>
The required protocol name
</tp:docstring>
</arg>
- <arg direction="out" type="a(susv)">
+ <arg direction="out" type="a(susv)" tp:type="Param_Spec[]">
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
- An array of structs containing:
- <ul>
- <li>a string parameter name</li>
- <li>a bitwise OR of the parameter flags (as defined above)</li>
- <li>a string D-Bus type signature</li>
- <li>a variant boxed default value (if the HAS_DEFAULT flag is not
- present, there is no default and this takes some dummy value)</li>
- </ul>
+ An array of structs representing possible parameters.
</tp:docstring>
</arg>
<tp:docstring>
@@ -70,7 +113,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</tp:possible-errors>
</method>
<method name="ListProtocols">
- <arg direction="out" type="as">
+ <arg direction="out" type="as" tp:type="Protocol[]">
<tp:docstring>
A array of string protocol identifiers supported by this manager
</tp:docstring>
@@ -79,26 +122,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
Get a list of protocol identifiers that are implemented by this
connection manager. The following well-known values should be used
when applicable:
- <ul>
- <li>aim - AOL Instant Messenger</li>
- <li>gadugadu - Gadu-Gadu</li>
- <li>groupwise - Novell Groupwise</li>
- <li>icq - ICQ</li>
- <li>irc - Internet Relay Chat</li>
- <li>jabber - Jabber (XMPP)</li>
- <li>local-xmpp - Link-local XMPP (XEP-0174, Bonjour, Salut)</li>
- <li>msn - MSN Messenger</li>
- <li>napster - Napster</li>
- <li>silc - SILC</li>
- <li>sip - Session Initiation Protocol (SIP)</li>
- <li>trepia - Trepia</li>
- <li>yahoo - Yahoo! Messenger</li>
- <li>zephyr - Zephyr</li>
- </ul>
</tp:docstring>
</method>
<signal name="NewConnection">
- <arg name="bus_name" type="s">
+ <arg name="bus_name" type="s" tp:type="DBus_Bus_Name">
<tp:docstring>
The D-Bus service where the connection object can be found
</tp:docstring>
@@ -108,7 +135,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
The object path of the Connection object on this service
</tp:docstring>
</arg>
- <arg name="proto" type="s">
+ <arg name="proto" type="s" tp:type="Protocol">
<tp:docstring>
The identifier for the protocol this connection uses
</tp:docstring>
@@ -118,12 +145,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</tp:docstring>
</signal>
<method name="RequestConnection">
- <arg direction="in" name="proto" type="s">
+ <arg direction="in" name="proto" type="s" tp:type="Protocol">
<tp:docstring>
The protocol identifier
</tp:docstring>
</arg>
- <arg direction="in" name="parameters" type="a{sv}">
+ <arg direction="in" name="parameters" type="a{sv}"
+ tp:type="String_Variant_Map">
<tp:docstring>
A dictionary mapping parameter name to the variant boxed value
</tp:docstring>
@@ -142,22 +170,36 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
<p>Request a Connection object representing a given account on a given
protocol with the given parameters. The method returns the bus name
and the object path where the new Connection object can be found, which
- should have the status of CONNECTION_STATUS_DISCONNECTED, to allow
+ should have the status of Connection_Status_Disconnected, to allow
signal handlers to be attached before connecting is started with the
Connect method.</p>
<p>In order to allow Connection objects to be discovered by new clients,
- the object path and bus name must be of the form:</p>
- <pre>/org/freedesktop/Telepathy/Connection/manager/proto/account</pre>
- <p>And:</p>
- <pre>org.freedesktop.Telepathy.Connection.manager.proto.account</pre>
- <p>Where manager and proto are the identifiers for this manager and this
- protocol, and account is a series of elements formed such that any
- valid distinct connection instance on this protocol has a distinct
- name. This might be formed by including the server name followed by the
- user name, or on protocols where connecting multiple times is
- permissable, a per-connection identifier is also necessary to ensure
- uniqueness.</p>
+ the object path and well-known bus name must be of the form
+ <code>/org/freedesktop/Telepathy/Connection/cmname/proto/account</code>
+ and
+ <code>org.freedesktop.Telepathy.Connection.cmname.proto.account</code>
+ where:</p>
+
+ <ul>
+ <li><em>cmname</em> is the same connection manager name that appears
+ in the connection manager's object path and well-known bus name</li>
+ <li><em>proto</em> is the protocol name as seen in
+ ListProtocols, but with "-" replaced with "_" to get a valid
+ object path/bus name</li>
+ <li><em>account</em> SHOULD be a series of elements formed such that
+ any valid distinct connection instance on this protocol has a
+ distinct name; this might be formed by including the server name
+ followed by the user name (escaped via some suitable mechanism like
+ telepathy-glib's tp_escape_as_identifier() function to preserve
+ uniqueness), or on protocols where connecting multiple times
+ is permissable, a per-connection identifier might be necessary to
+ ensure uniqueness</li>
+ </ul>
+
+ <p>Clients MUST NOT attempt to parse the <em>account</em> part of the
+ bus name. Connection managers MAY use any unique string for this
+ part.</p>
<p>The parameters which must and may be provided in the parameters
dictionary can be discovered with the GetParameters method. These
@@ -226,16 +268,90 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</method>
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
<p>A D-Bus service which allows connections to be created. The manager
- processes are intended to be started by D-Bus service activation. The
- names of these services, the protocols they support, and the parameters
- understood by that protocol are intended to be discovered by reading files
- on disk which are provided along with the connection manager. These are
- documented elsewhere.</p>
-
- <p>Once a connection manager service has been activated, the object
- path of the manager object implementing this interface is always
- /org/freedesktop/Telepathy/ConnectionManager/name
- Where name is the identifier for the connection manager.</p>
+ processes are intended to be started by D-Bus service activation.</p>
+
+ <p>For service discovery, each Telepathy connection manager must have
+ a <em>connection manager name</em>, which is a non-empty string of
+ ASCII letters, digits and underscores, starting with a letter. This
+ is typically the name of the executable with any "telepathy-" prefix
+ removed.</p>
+
+ <p>The connection manager must then provide a well-known bus name of
+ <code>org.freedesktop.Telepathy.ConnectionManager.<em>cmname</em></code>
+ where <em>cmname</em> is its connection manager name. If it makes sense
+ to start the connection manager using D-Bus service activation, it
+ must register that well-known name for service activation by installing
+ a .service file.</p>
+
+ <p>Clients can list the running connection managers by calling the
+ ListNames method on the D-Bus daemon's org.freedesktop.DBus interface
+ and looking for names matching the above pattern; they can list the
+ activatable connection managers by calling ListActivatableNames, and
+ they should usually combine the two lists to get a complete list of
+ running or activatable connection managers.</p>
+
+ <p>When the connection manager is running, it must have an object
+ implementing the ConnectionManager interface at the object path
+ <code>/org/freedesktop/Telepathy/ConnectionManager/<em>cmname</em></code>.
+ </p>
+
+ <p>Connection managers' capabilities can be determined dynamically by
+ calling their ListProtocols method, then for each protocol of interest,
+ calling GetParameters to discover the required and optional parameters.
+ However, since it is inefficient to activate all possible connection
+ managers on the system just to find out what they can do, there
+ is a standard mechanism to store static information about CMs in
+ ".manager files".</p>
+
+ <p>To look up a connection manager's supported protocols, clients
+ should search the data directories specified by
+ <a href="http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html">the
+ freedesktop.org XDG Base Directory Specification</a> ($XDG_DATA_HOME,
+ defaulting to $HOME/.local/share if unset, followed by
+ colon-separated paths from $XDG_DATA_DIRS, defaulting to
+ /usr/local/share:/usr/share if unset) for the first file named
+ <code>telepathy/managers/<em>cmname</em>.manager</code> that can be
+ read without error. This file has the same syntax as a
+ <a href="http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html">freedesktop.org Desktop Entry file</a>.</p>
+
+ <p>For each protocol name <em>proto</em> that would be returned by
+ ListProtocols, the .manager file contains a group
+ headed <code>[Protocol <em>proto</em>]</code>. For each parameter
+ <em>p</em> that would be returned by GetParameters(<em>proto</em>), the
+ .manager file contains a key <code>param-<em>p</em></code> with a value
+ consisting of a D-Bus signature (a single complete type), optionally
+ followed by a space and a space-separated list of flags. The supported
+ flags are <code>required</code>, corresponding to
+ Conn_Mgr_Param_Flag_Required, and <code>register</code>, corresponding
+ to Conn_Mgr_Param_Flag_Register.
+ </p>
+
+ <p>The group may also contain a key <code>default-<em>p</em></code>
+ whose value is a string form of the default value for the parameter.
+ If this key exists, it sets the default, and also sets the flag
+ Conn_Mgr_Param_Flag_Has_Default. The default value is formatted
+ according to the D-Bus signature as follows:</p>
+
+ <dl>
+ <dt>s (string)</dt>
+ <dd>The UTF-8 string</dd>
+ <dt>o (object path)</dt>
+ <dd>The object path as an ASCII string</dd>
+ <dt>b (boolean)</dt>
+ <dd>"true" (case-insensitively) or "1" means True, "false"
+ (case-insensitively) or "0" means False</dd>
+ <dt>q, u, t (16-, 32-, 64-bit unsigned integer)</dt>
+ <dd>ASCII decimal integer</dd>
+ <dt>n, i, x (16-, 32-, 64-bit signed integer)</dt>
+ <dd>ASCII decimal integer, optionally prefixed with "-"</dd>
+ <dt>d (double-precision floating point)</dt>
+ <dd>ASCII decimal number</dd>
+ </dl>
+
+ <p>Currently, no other D-Bus signatures are allowed to have default values,
+ but clients parsing the .manager file MUST ignore defaults
+ that they cannot parse, and treat them as if the
+ <code>default-<em>p</em></code> key was not present at all.</p>
<p>It is not required that a connection manager be able to support multiple
protocols, or even multiple connections. When a connection is made, a
diff --git a/spec/Media_Session_Handler.xml b/spec/Media_Session_Handler.xml
index 5401f57..b4e9ffb 100644
--- a/spec/Media_Session_Handler.xml
+++ b/spec/Media_Session_Handler.xml
@@ -62,7 +62,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
<method name="Ready">
<tp:docstring>
Inform the connection manager that a client is ready to handle
- this session handler.
+ this session handler (i.e. that it has connected to the
+ NewStreamHandler signal and done any other necessary setup).
</tp:docstring>
</method>
<tp:docstring>
diff --git a/spec/Media_Stream_Handler.xml b/spec/Media_Stream_Handler.xml
index df5a067..92be1f2 100644
--- a/spec/Media_Stream_Handler.xml
+++ b/spec/Media_Stream_Handler.xml
@@ -19,13 +19,47 @@ 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.Media.StreamHandler">
+
+ <tp:struct name="Media_Stream_Handler_Candidate"
+ array-name="Media_Stream_Handler_Candidate_List">
+ <tp:member type="s" name="Name"/>
+ <tp:member type="a(usuussduss)" name="Transports"
+ tp:type="Media_Stream_Handler_Transport[]"/>
+ </tp:struct>
+
+ <tp:struct name="Media_Stream_Handler_Transport"
+ array-name="Media_Stream_Handler_Transport_List">
+ <tp:member type="u" name="Component_Number"/>
+ <tp:member type="s" name="IP_Address"/>
+ <tp:member type="u" name="Port"/>
+ <tp:member type="u" tp:type="Media_Stream_Base_Proto" name="Protocol"/>
+ <tp:member type="s" name="Subtype"/>
+ <tp:member type="s" name="Profile"/>
+ <tp:member type="d" name="Preference_Value"/>
+ <tp:member type="u" tp:type="Media_Stream_Transport_Type"
+ name="Transport_Type"/>
+ <tp:member type="s" name="Username"/>
+ <tp:member type="s" name="Password"/>
+ </tp:struct>
+
+ <tp:struct name="Media_Stream_Handler_Codec"
+ array-name="Media_Stream_Handler_Codec_List">
+ <tp:member type="u" name="Codec_ID"/>
+ <tp:member type="s" name="Name"/>
+ <tp:member type="u" tp:type="Media_Stream_Type" name="Media_Type"/>
+ <tp:member type="u" name="Clock_Rate"/>
+ <tp:member type="u" name="Number_Of_Channels"/>
+ <tp:member type="a{ss}" name="Parameters" tp:type="String_String_Map"/>
+ </tp:struct>
+
<signal name="AddRemoteCandidate">
<arg name="candidate_id" type="s">
<tp:docstring>
String identifier for this candidate
</tp:docstring>
</arg>
- <arg name="transports" type="a(usuussduss)">
+ <arg name="transports" type="a(usuussduss)"
+ tp:type="Media_Stream_Handler_Transport[]">
<tp:docstring>
Array of transports for this candidate with fields,
as defined in NewNativeCandidate
@@ -105,7 +139,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
String identifier for this candidate
</tp:docstring>
</arg>
- <arg direction="in" name="transports" type="a(usuussduss)">
+ <arg direction="in" name="transports" type="a(usuussduss)"
+ tp:type="Media_Stream_Handler_Transport[]">
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
Array of transports for this candidate, with fields:
<ul>
@@ -191,7 +226,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</tp:docstring>
</signal>
<signal name="SetRemoteCandidateList">
- <arg name="remote_candidates" type="a(sa(usuussduss))">
+ <arg name="remote_candidates" type="a(sa(usuussduss))"
+ tp:type="Media_Stream_Handler_Candidate[]">
<tp:docstring>
A list of candidate id and a list of transports
as defined in NewNativeCandidate
@@ -203,7 +239,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</tp:docstring>
</signal>
<signal name="SetRemoteCodecs">
- <arg name="codecs" type="a(usuuua{ss})">
+ <arg name="codecs" type="a(usuuua{ss})"
+ tp:type="Media_Stream_Handler_Codec[]">
<tp:docstring>As for SupportedCodecs</tp:docstring>
</arg>
<tp:docstring>
@@ -250,7 +287,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</tp:docstring>
</method>
<method name="SupportedCodecs">
- <arg direction="in" name="codecs" type="a(usuuua{ss})">
+ <arg direction="in" name="codecs" type="a(usuuua{ss})"
+ tp:type="Media_Stream_Handler_Codec[]">
<tp:docstring>
List of codec info structures, each containing:
<ul>
diff --git a/spec/Properties_Interface.xml b/spec/Properties_Interface.xml
index ffe49c4..a028913 100644
--- a/spec/Properties_Interface.xml
+++ b/spec/Properties_Interface.xml
@@ -19,6 +19,35 @@ 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.Properties">
+
+ <tp:struct name="Property_Spec" array-name="Property_Spec_List">
+ <tp:docstring>A struct (property ID, property name, D-Bus signature,
+ flags) representing a property, as returned by ListProperties on the
+ Properties interface.</tp:docstring>
+ <tp:member type="u" name="Property_ID"/>
+ <tp:member type="s" name="name"/>
+ <tp:member type="s" tp:type="DBus_Signature" name="signature"/>
+ <tp:member type="u" tp:type="Property_Flags" name="Flags"/>
+ </tp:struct>
+
+ <tp:struct name="Property_Flags_Change"
+ array-name="Property_Flags_Change_List">
+ <tp:docstring>A struct (property ID, flags) representing a change to
+ a property's flags, as seen in the PropertyFlagsChanged signal on
+ the Properties interface.</tp:docstring>
+ <tp:member type="u" name="Property_ID"/>
+ <tp:member type="u" name="New_Flags"/>
+ </tp:struct>
+
+ <tp:struct name="Property_Value" array-name="Property_Value_List">
+ <tp:docstring>A struct (property ID, value) representing a
+ property's value, as seen in the PropertiesChanged signal on
+ the Properties interface, returned by the GetProperties method
+ and passed to the SetProperties method.</tp:docstring>
+ <tp:member type="u" name="Property_ID"/>
+ <tp:member type="v" name="Value"/>
+ </tp:struct>
+
<method name="GetProperties">
<tp:docstring>
Returns an array of (identifier, value) pairs containing the current
@@ -27,7 +56,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
<arg direction="in" name="properties" type="au">
<tp:docstring>An array of property identifiers</tp:docstring>
</arg>
- <arg direction="out" type="a(uv)">
+ <arg direction="out" type="a(uv)" tp:type="Property_Value[]">
<!-- XXX: if we're ever breaking API compatibility, make this a{uv} -->
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
<p>An array of structs containing:</p>
@@ -55,7 +84,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
<tp:docstring>
Returns a dictionary of the properties available on this channel.
</tp:docstring>
- <arg direction="out" type="a(ussu)">
+ <arg direction="out" type="a(ussu)" tp:type="Property_Spec[]">
<!-- XXX: if we're ever breaking API compatibility, make this
a{u(ssu)} ? -->
<tp:docstring>
@@ -73,7 +102,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
<tp:docstring>
Emitted when the value of readable properties has changed.
</tp:docstring>
- <arg name="properties" type="a(uv)">
+ <arg name="properties" type="a(uv)" tp:type="Property_Value[]">
<!-- XXX: if we're ever breaking API compatibility, make this a{uv} -->
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
<p>An array of structs containing:</p>
@@ -90,7 +119,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
<tp:docstring>
Emitted when the flags of some room properties have changed.
</tp:docstring>
- <arg name="properties" type="a(uu)">
+ <arg name="properties" type="a(uu)" tp:type="Property_Flags_Change[]">
<!-- XXX: if we're ever breaking API compatibility, make this a{uu} -->
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
<p>An array of structs containing:</p>
@@ -116,7 +145,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
are invalid, InvalidArgument will be returned.</p>
</tp:docstring>
- <arg direction="in" name="properties" type="a(uv)">
+ <arg direction="in" name="properties" type="a(uv)"
+ tp:type="Property_Value[]">
<!-- XXX: if we're ever breaking API compatibility, make this a{uv} -->
<tp:docstring>
A dictionary mapping integer identifiers to boxed values
diff --git a/spec/all.xml b/spec/all.xml
index 67ebcac..1fb517c 100644
--- a/spec/all.xml
+++ b/spec/all.xml
@@ -3,10 +3,10 @@
xmlns:xi="http://www.w3.org/2001/XInclude">
<tp:title>Telepathy D-Bus Interface Specification</tp:title>
-<tp:version>0.16.0</tp:version>
+<tp:version>0.17.1</tp:version>
-<tp:copyright>Copyright (C) 2005, 2006, 2007 Collabora Limited</tp:copyright>
-<tp:copyright>Copyright (C) 2005, 2006, 2007 Nokia Corporation</tp:copyright>
+<tp:copyright>Copyright (C) 2005-2008 Collabora Limited</tp:copyright>
+<tp:copyright>Copyright (C) 2005-2008 Nokia Corporation</tp:copyright>
<tp:copyright>Copyright (C) 2006 INdT</tp:copyright>
<tp:license xmlns="http://www.w3.org/1999/xhtml">
@@ -44,6 +44,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
<xi:include href="Channel_Type_Text.xml"/>
<xi:include href="Channel_Type_Tubes.xml"/>
+<xi:include href="Channel_Interface_Call_Merging.xml"/>
<xi:include href="Channel_Interface_Chat_State.xml"/>
<xi:include href="Channel_Interface_DTMF.xml"/>
<xi:include href="Channel_Interface_Group.xml"/>
@@ -57,7 +58,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
<xi:include href="Properties_Interface.xml"/>
+<xi:include href="Channel_Handler.xml"/>
+
<xi:include href="errors.xml"/>
+<xi:include href="generic-types.xml"/>
<xi:include href="extensions.xml">
<xi:fallback>
diff --git a/spec/generic-types.xml b/spec/generic-types.xml
new file mode 100644
index 0000000..f134d7c
--- /dev/null
+++ b/spec/generic-types.xml
@@ -0,0 +1,67 @@
+<tp:generic-types
+ xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
+
+ <tp:simple-type name="Unix_Timestamp" type="u">
+ <tp:docstring>An unsigned 32-bit integer representing time since 1970</tp:docstring>
+ </tp:simple-type>
+
+ <tp:simple-type name="Handle" type="u">
+ <tp:docstring>An unsigned 32-bit integer representing a handle</tp:docstring>
+ </tp:simple-type>
+
+ <tp:simple-type name="Contact_Handle" type="u">
+ <tp:docstring>An unsigned 32-bit integer representing a handle of type
+ Handle_Type_Contact</tp:docstring>
+ </tp:simple-type>
+
+ <tp:simple-type name="Room_Handle" type="u">
+ <tp:docstring>An unsigned 32-bit integer representing a handle of type
+ Handle_Type_Room</tp:docstring>
+ </tp:simple-type>
+
+ <tp:simple-type name="List_Handle" type="u">
+ <tp:docstring>An unsigned 32-bit integer representing a handle of type
+ Handle_Type_List</tp:docstring>
+ </tp:simple-type>
+
+ <tp:simple-type name="Group_Handle" type="u">
+ <tp:docstring>An unsigned 32-bit integer representing a handle of type
+ Handle_Type_Group</tp:docstring>
+ </tp:simple-type>
+
+ <tp:simple-type name="DBus_Bus_Name" type="s">
+ <tp:docstring>A string representing a D-Bus bus name - either a well-known
+ name like "org.freedesktop.Telepathy.MissionControl" or a unique name
+ like ":1.123"</tp:docstring>
+ </tp:simple-type>
+
+ <tp:simple-type name="DBus_Unique_Name" type="s">
+ <tp:docstring>A string representing a D-Bus unique name, such as
+ ":1.123"</tp:docstring>
+ </tp:simple-type>
+
+ <tp:simple-type name="DBus_Interface" type="s">
+ <tp:docstring>A string representing a D-Bus interface</tp:docstring>
+ </tp:simple-type>
+
+ <tp:simple-type name="DBus_Signature" type="s">
+ <tp:docstring>A string representing a D-Bus signature
+ (the 'g' type isn't used because of poor interoperability, particularly
+ with dbus-glib)</tp:docstring>
+ </tp:simple-type>
+
+ <tp:mapping name="String_Variant_Map">
+ <tp:docstring>A mapping from strings to variants representing extra
+ key-value pairs.</tp:docstring>
+ <tp:member type="s" name="Key"/>
+ <tp:member type="v" name="Value"/>
+ </tp:mapping>
+
+ <tp:mapping name="String_String_Map">
+ <tp:docstring>A mapping from strings to strings representing extra
+ key-value pairs.</tp:docstring>
+ <tp:member type="s" name="Key"/>
+ <tp:member type="s" name="Value"/>
+ </tp:mapping>
+
+</tp:generic-types>