aboutsummaryrefslogtreecommitdiffstats
path: root/extensions
diff options
context:
space:
mode:
Diffstat (limited to 'extensions')
-rw-r--r--extensions/Channel_Interface_Tube.xml148
-rw-r--r--extensions/Channel_Type_DBus_Tube.xml163
-rw-r--r--extensions/Channel_Type_Stream_Tube.xml206
-rw-r--r--extensions/Connection_Interface_Location.xml330
-rw-r--r--extensions/Makefile.am30
-rw-r--r--extensions/all.xml12
-rw-r--r--extensions/misc.xml4
7 files changed, 358 insertions, 535 deletions
diff --git a/extensions/Channel_Interface_Tube.xml b/extensions/Channel_Interface_Tube.xml
deleted file mode 100644
index 8e6eb6514..000000000
--- a/extensions/Channel_Interface_Tube.xml
+++ /dev/null
@@ -1,148 +0,0 @@
-<?xml version="1.0" ?>
-<node name="/Channel_Interface_Tube" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
- <tp:copyright>Copyright © 2008-2009 Collabora Limited</tp:copyright>
- <tp:copyright>Copyright © 2008-2009 Nokia Corporation</tp:copyright>
- <tp:license>
- 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
-Lesser 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.Tube.DRAFT"
- tp:causes-havoc="experimental">
- <tp:requires interface="org.freedesktop.Telepathy.Channel"/>
- <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
- <p>A <i>tube</i> is a mechanism for arbitrary data transfer between
- two or more IM users, used to allow applications on the users'
- systems to communicate without having to establish network
- connections themselves. Currently, two types of tube exist:
- <tp:dbus-ref namespace="org.freedesktop.Telepathy"
- >Channel.Type.DBusTube</tp:dbus-ref> and
- <tp:dbus-ref namespace="org.freedesktop.Telepathy"
- >Channel.Type.StreamTube</tp:dbus-ref>. This interface contains
- the properties, signals and methods common to both types of tube;
- you can only create channels of a specific tube type, not of this
- type. A tube channel contains exactly one tube; if you need several
- tubes, you have to create several tube channels.</p>
-
- <p>Tube channels can be requested for handles of type
- HANDLE_TYPE_CONTACT (for 1-1 communication) or of type
- HANDLE_TYPE_ROOM (to communicate with others in the room
- simultaneously).</p>
-
- <p>As an exception to the usual handling of capabilities, connection managers
- for protocols with capability discovery, such as XMPP, SHOULD advertise the
- capability representing each Tube type that they support
- (<tp:dbus-ref namespace="org.freedesktop.Telepathy">Channel.Type.DBusTube</tp:dbus-ref> and/or
- <tp:dbus-ref namespace="org.freedesktop.Telepathy">Channel.Type.StreamTube</tp:dbus-ref>)
- even if no client has indicated via
- <tp:dbus-ref
- namespace="org.freedesktop.Telepathy.Connection.Interface.ContactCapabilities.DRAFT">SetSelfCapabilities</tp:dbus-ref>
- that such a tube is supported.</p>
-
- <tp:rationale>
- <p>To lower the barrier entry of new tube application, CM SHOULD accept to offer tubes of any
- <tp:dbus-ref
- namespace="org.freedesktop.Telepathy.Channel.Type.StreamTube.DRAFT">Service</tp:dbus-ref> or
- <tp:dbus-ref
- namespace="org.freedesktop.Telepathy.Channel.Type.DBusTube.DRAFT">ServiceName</tp:dbus-ref>
- if the contact announced to support tubes.</p>
- </tp:rationale>
- </tp:docstring>
-
- <property name="Parameters" type="a{sv}" tp:type="String_Variant_Map"
- access="read" tp:name-for-bindings="Parameters">
- <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
- <p>Each tube has a dictionary of arbitrary parameters. Parameters are
- commonly used to bootstrap legacy protocols where you can't
- negotiate parameters in-band. The allowable keys,
- types and values are defined by the service. Connection managers
- must support the value being a string (D-Bus type 's'), array of bytes
- (D-Bus type 'ay'), unsigned integer (D-Bus type 'u'), integer (D-Bus
- type 'i') and boolean (D-Bus type 'b').</p>
- <p>When the tube is offered, the parameters are transmitted with the
- offer and appear as a property of the incoming tube for other
- participants.</p>
- <p>Example of valid parameters for 'smb' Server Message Block over
- TCP/IP (from <a href="http://www.dns-sd.org/ServiceTypes.html">DNS
- SRV (RFC 2782) Service Types
- http://www.dns-sd.org/ServiceTypes.html</a>):
- <code>{'u': 'username', 'p': 'password', 'path': 'path'}</code></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. This property is undefined until the tube is offered
- (using <tp:dbus-ref namespace="org.freedesktop.Telepathy.Channel.Type.StreamTube.DRAFT">OfferStreamTube</tp:dbus-ref>
- or <tp:dbus-ref namespace="org.freedesktop.Telepathy.Channel.Type.DBusTube.DRAFT">OfferDBusTube</tp:dbus-ref>).
- Once it has been offered, this property MUST NOT change.</p>
- <p>When receiving an incoming tube, this property is immutable and so advertised in the
- <tp:dbus-ref namespace="org.freedesktop.Telepathy">Connection.Interface.Requests.NewChannels</tp:dbus-ref>
- signal.</p>
- </tp:docstring>
- </property>
-
- <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>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>
- </tp:docstring>
- </property>
-
- <tp:enum name="Tube_Channel_State" type="u">
- <tp:enumvalue suffix="Local_Pending" value="0">
- <tp:docstring>
- The initiator offered the tube. The tube is waiting to be
- accepted/closed locally. If the client accepts the tube, the tube's
- state will be Open.
- </tp:docstring>
- </tp:enumvalue>
- <tp:enumvalue suffix="Remote_Pending" value="1">
- <tp:docstring>
- The tube is waiting to be accepted/closed remotely. If the
- recipient accepts the tube, the tube's state will be Open.
- </tp:docstring>
- </tp:enumvalue>
- <tp:enumvalue suffix="Open" value="2">
- <tp:docstring>
- The initiator offered the tube and the recipient accepted it. The
- tube is open for traffic. The tube's state stays in this state until
- it is closed.
- </tp:docstring>
- </tp:enumvalue>
- <tp:enumvalue suffix="Not_Offered" value="3">
- <tp:docstring>
- The tube channel has been requested but the tube is not yet offered.
- The client should offer the tube to the recipient and the tube's
- state will be Remote_Pending. The method to offer the tube depend on
- the tube type.
- </tp:docstring>
- </tp:enumvalue>
- </tp:enum>
-
- <signal name="TubeChannelStateChanged"
- tp:name-for-bindings="Tube_Channel_State_Changed">
- <tp:docstring>
- Emitted when the state of the tube channel changes.
- </tp:docstring>
- <arg name="state" type="u" tp:type="Tube_Channel_State">
- <tp:docstring>
- The new state of the tube; see the Tube_Channel_State enumeration.
- </tp:docstring>
- </arg>
- </signal>
-
- </interface>
-
-</node>
-<!-- vim:set sw=2 sts=2 et ft=xml: -->
diff --git a/extensions/Channel_Type_DBus_Tube.xml b/extensions/Channel_Type_DBus_Tube.xml
deleted file mode 100644
index 513d77caa..000000000
--- a/extensions/Channel_Type_DBus_Tube.xml
+++ /dev/null
@@ -1,163 +0,0 @@
-<?xml version="1.0" ?>
-<node name="/Channel_Type_DBus_Tube" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
- <tp:copyright>Copyright © 2008-2009 Collabora Limited</tp:copyright>
- <tp:copyright>Copyright © 2008-2009 Nokia Corporation</tp:copyright>
- <tp:license>
- 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
-Lesser 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.Type.DBusTube.DRAFT"
- tp:causes-havoc="experimental">
- <tp:requires interface="org.freedesktop.Telepathy.Channel"/>
- <tp:requires interface="org.freedesktop.Telepathy.Channel.Interface.Tube.DRAFT"/>
- <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
- <p>A D-Bus tube is an ordered reliable transport, for transporting D-Bus
- traffic.</p>
-
- <p>For each D-Bus tube, the connection manager listens on a D-Bus
- server address, as detailed in the D-Bus specification. On this
- address, it emulates a bus upon which each tube participant appears
- as an endpoint.</p>
-
- <p>The objects and interfaces which are expected to exist on the
- emulated bus depend on the well-known name; typically, either the
- participant who initiated the tube is expected to export the same
- objects/interfaces that would be exported by a service of that name
- on a bus, or all participants are expected to export those
- objects/interfaces.</p>
-
- <p>In a multi-user context (Handle_Type_Room) the tube behaves
- like the D-Bus bus daemon, so participants can send each other
- private messages, or can send broadcast messages which are
- received by everyone in the tube (including themselves).
- Each participant has a D-Bus unique name; connection managers
- MUST prevent participants from sending messages with the wrong
- sender unique name, and SHOULD attempt to avoid participants
- receiving messages not intended for them.</p>
-
- <p>In a 1-1 context (Handle_Type_Contact) the tube behaves like
- a peer-to-peer D-Bus connection - arbitrary D-Bus messages with
- any sender and/or destination can be sent by each participant,
- and each participant receives all messages sent by the other
- participant.</p>
-
- </tp:docstring>
-
- <method name="OfferDBusTube" tp:name-for-bindings="Offer_DBus_Tube">
- <tp:docstring>
- Offers a D-Bus tube providing the service specified.
- </tp:docstring>
- <arg direction="in" name="parameters" type="a{sv}"
- tp:type="String_Variant_Map">
- <tp:docstring>
- The dictionary of arbitrary
- <tp:dbus-ref namespace="org.freedesktop.Telepathy.Channel.Interface.Tube.DRAFT">Parameters</tp:dbus-ref>
- to send with the tube offer.
- </tp:docstring>
- </arg>
- <arg direction="out" name="address" type="s">
- <tp:docstring>
- The string describing the address of the private bus. The client
- SHOULD not attempt to connect to the address until the tube is open.
- </tp:docstring>
- </arg>
- <tp:possible-errors>
- <tp:error name="org.freedesktop.Telepathy.Error.NetworkError"/>
- <tp:error name="org.freedesktop.Telepathy.Error.NotAvailable">
- <tp:docstring>
- The contact associated with this channel doesn't have tubes
- capabilities.
- </tp:docstring>
- </tp:error>
- </tp:possible-errors>
- </method>
-
- <method name="AcceptDBusTube" tp:name-for-bindings="Accept_DBus_Tube">
- <tp:docstring>
- Accept a D-Bus tube that's in the "local pending" state. The
- connection manager will attempt to open the tube. The tube remains in
- the "local pending" state until the TubeStateChanged signal is
- emitted.
- </tp:docstring>
- <arg direction="out" name="address" type="s">
- <tp:docstring>
- The string describing the address of the private bus. The client
- SHOULD not attempt to connect to the address until the tube is open.
- </tp:docstring>
- </arg>
- </method>
-
- <signal name="DBusNamesChanged" tp:name-for-bindings="DBus_Names_Changed">
- <tp:docstring>
- Emitted on a multi-user (i.e. Handle_Type_Room) D-Bus tube when a
- participant opens or closes the tube. This provides change
- notification for the <tp:member-ref>DBusNames</tp:member-ref> property.
- </tp:docstring>
- <arg name="added" type="a{us}" tp:type="DBus_Tube_Participants">
- <tp:docstring>
- Array of handles and D-Bus names of new participants.
- </tp:docstring>
- </arg>
- <arg name="removed" type="au" tp:type="Contact_Handle[]">
- <tp:docstring>
- Array of handles of former participants.
- </tp:docstring>
- </arg>
- </signal>
-
- <property name="ServiceName" type="s" access="read"
- tp:name-for-bindings="Service_Name">
- <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
- <p>A string representing the service name that will be used over the
- tube. It SHOULD be a well-known D-Bus service name, of the form
- com.example.ServiceName.</p>
- <p>When the tube is offered, the service name is transmitted to the
- other end.</p>
- <p>When requesting a channel with
- <tp:dbus-ref namespace="org.freedesktop.Telepathy">Connection.Interface.Requests.CreateChannel</tp:dbus-ref>,
- this property MUST be included in the request.</p>
- </tp:docstring>
- </property>
-
- <property name="DBusNames" tp:name-for-bindings="DBus_Names"
- access="read" type="a{us}" tp:type="DBus_Tube_Participants">
- <tp:docstring>
- 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
- dictionary. Change notification is via
- <tp:member-ref>DBusNamesChanged</tp:member-ref>.
- </tp:docstring>
- </property>
-
- <tp:mapping name="DBus_Tube_Participants">
- <tp:docstring>Represents the participants in a multi-user D-Bus tube, as
- used by the <tp:member-ref>DBusNames</tp:member-ref> property and the
- <tp:member-ref>DBusNamesChanged</tp:member-ref> signal.</tp:docstring>
- <tp:member type="u" tp:type="Contact_Handle" name="Handle">
- <tp:docstring>
- The handle of a participant in this D-Bus tube.
- </tp:docstring>
- </tp:member>
- <tp:member type="s" tp:type="DBus_Unique_Name" name="Unique_Name">
- <tp:docstring>
- That participant's unique name.
- </tp:docstring>
- </tp:member>
- </tp:mapping>
-
- </interface>
-
-</node>
-<!-- vim:set sw=2 sts=2 et ft=xml: -->
diff --git a/extensions/Channel_Type_Stream_Tube.xml b/extensions/Channel_Type_Stream_Tube.xml
deleted file mode 100644
index 060cd0bb0..000000000
--- a/extensions/Channel_Type_Stream_Tube.xml
+++ /dev/null
@@ -1,206 +0,0 @@
-<?xml version="1.0" ?>
-<node name="/Channel_Type_Stream_Tube" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
- <tp:copyright>Copyright © 2008-2009 Collabora Limited</tp:copyright>
- <tp:copyright>Copyright © 2008-2009 Nokia Corporation</tp:copyright>
- <tp:license>
- 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
-Lesser 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.Type.StreamTube.DRAFT"
- tp:causes-havoc="experimental">
- <tp:requires interface="org.freedesktop.Telepathy.Channel"/>
- <tp:requires interface="org.freedesktop.Telepathy.Channel.Interface.Tube.DRAFT"/>
- <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
- <p>A stream tube is a transport for ordered, reliable data transfer,
- similar to SOCK_STREAM sockets.</p>
-
- <p>When offering a stream tube, the initiating client creates a local
- listening socket and offers it to the recipient client using the
- <tp:member-ref>OfferStreamTube</tp:member-ref> method. When a
- recipient accepts a stream tube using the
- <tp:member-ref>AcceptStreamTube</tp:member-ref> method, the
- recipient's connection manager creates a new local listening socket.
- Each time the recipient's client connects to this socket, the
- initiator's connection manager proxies this connection to the
- originally offered socket.</p>
-
- </tp:docstring>
-
- <method name="OfferStreamTube" tp:name-for-bindings="Offer_Stream_Tube">
- <tp:docstring>
- Offer a stream tube exporting the local socket specified.
- </tp:docstring>
- <arg direction="in" name="address_type" type="u" tp:type="Socket_Address_Type">
- <tp:docstring>
- The type of the listening address of the local service, as a member of
- Socket_Address_Type.
- </tp:docstring>
- </arg>
- <arg direction="in" name="address" type="v">
- <tp:docstring>
- The listening address of the local service, as indicated by the
- address_type.
- </tp:docstring>
- </arg>
- <arg direction="in" name="access_control" type="u" tp:type="Socket_Access_Control">
- <tp:docstring>
- The access control the local service applies to the local socket,
- specified so the connection manager can behave appropriately
- when it connects.
- </tp:docstring>
- </arg>
- <arg direction="in" name="access_control_param" type="v">
- <tp:docstring>
- A parameter for the access control type, to be interpreted as
- specified in the documentation for the Socket_Access_Control enum.
- </tp:docstring>
- </arg>
- <arg direction="in" name="parameters" type="a{sv}"
- tp:type="String_Variant_Map">
- <tp:docstring>
- The dictionary of arbitrary
- <tp:dbus-ref namespace="org.freedesktop.Telepathy.Channel.Interface.Tube.DRAFT">Parameters</tp:dbus-ref>
- to send with the tube offer.
- </tp:docstring>
- </arg>
- <tp:possible-errors>
- <tp:error name="org.freedesktop.Telepathy.Error.NetworkError"/>
- <tp:error name="org.freedesktop.Telepathy.Error.NotAvailable">
- <tp:docstring>
- The contact associated with this channel doesn't have tube
- capabilities.
- </tp:docstring>
- </tp:error>
- <tp:error name="org.freedesktop.Telepathy.Error.NotImplemented">
- <tp:docstring>
- The connection manager doesn't support the given address type
- or access-control type.
- </tp:docstring>
- </tp:error>
- </tp:possible-errors>
- </method>
-
- <method name="AcceptStreamTube" tp:name-for-bindings="Accept_Stream_Tube">
- <tp:docstring>
- Accept a stream tube that's in the "local pending" state. The
- connection manager will attempt to open the tube. The tube remains in
- the "local pending" state until the TubeStateChanged signal is
- emitted.
- </tp:docstring>
- <arg direction="in" name="address_type" type="u" tp:type="Socket_Address_Type">
- <tp:docstring>
- The type of address the connection manager should listen on.
- </tp:docstring>
- </arg>
- <arg direction="in" name="access_control" type="u" tp:type="Socket_Access_Control">
- <tp:docstring>
- The type of access control the connection manager should apply to
- the socket.
- </tp:docstring>
- </arg>
- <arg direction="in" name="access_control_param" type="v">
- <tp:docstring>
- A parameter for the access control type, to be interpreted as
- specified in the documentation for the Socket_Access_Control enum.
- </tp:docstring>
- </arg>
- <arg direction="out" name="address" type="v">
- <tp:docstring>
- The address on which the connection manager will listen for
- connections to this tube. The client should not attempt to connect
- to the address until the tube is open.
- </tp:docstring>
- </arg>
-
- <tp:possible-errors>
- <tp:error name="org.freedesktop.Telepathy.Error.InvalidArgument">
- <tp:docstring>
- The access_control_param is invalid with the given access_control.
- </tp:docstring>
- </tp:error>
- <tp:error name="org.freedesktop.Telepathy.Error.NotImplemented">
- <tp:docstring>
- The given address type or access-control mechanism is not supported.
- </tp:docstring>
- </tp:error>
- </tp:possible-errors>
- </method>
-
- <signal name="StreamTubeNewConnection"
- tp:name-for-bindings="Stream_Tube_New_Connection">
- <tp:docstring>
- Emitted on a stream tube when a participant opens a new connection
- to its socket.
- </tp:docstring>
- <arg name="handle" type="u" tp:type="Contact_Handle">
- <tp:docstring>
- The handle of the participant who opened the new connection
- </tp:docstring>
- </arg>
- </signal>
-
- <property name="Service" type="s" access="read"
- tp:name-for-bindings="Service">
- <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
- <p> A string representing the service name that will be used over the
- tube. It should be a well-known TCP service name as defined by
- <a href="http://www.iana.org/assignments/port-numbers">
- http://www.iana.org/assignments/port-numbers</a> or
- <a href="http://www.dns-sd.org/ServiceTypes.html">
- http://www.dns-sd.org/ServiceTypes.html</a>, for instance
- "rsync" or "daap".</p>
- <p>When the tube is offered, the service name is transmitted to the
- other end.</p>
- <p>When requesting a channel with
- <tp:dbus-ref namespace="org.freedesktop.Telepathy">Connection.Interface.Requests.CreateChannel</tp:dbus-ref>,
- this property MUST be included in the request.</p>
- </tp:docstring>
- </property>
-
- <property name="SupportedSocketTypes" type="a{uau}"
- tp:type="Supported_Socket_Map" access="read"
- tp:name-for-bindings="Supported_Socket_Types">
- <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)
- that the connection manager supports for stream tubes with that
- address type. For simplicity, if a CM supports offering a
- particular type of tube, it is assumed to support accepting it.</p>
-
- <p>A typical value for a host without IPv6 support:</p>
-
- <pre>
- {
- Socket_Address_Type_IPv4:
- [Socket_Access_Control_Localhost, Socket_Access_Control_Port,
- Socket_Access_Control_Netmask],
- Socket_Address_Type_Unix:
- [Socket_Access_Control_Localhost, Socket_Access_Control_Credentials]
- }
- </pre>
-
- <p>Connection Managers MUST support at least IPv4 with the localhost
- access control.</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>
-
- </tp:docstring>
- </property>
-
- </interface>
-
-</node>
-<!-- vim:set sw=2 sts=2 et ft=xml: -->
diff --git a/extensions/Connection_Interface_Location.xml b/extensions/Connection_Interface_Location.xml
new file mode 100644
index 000000000..1e7bee4e0
--- /dev/null
+++ b/extensions/Connection_Interface_Location.xml
@@ -0,0 +1,330 @@
+<?xml version="1.0" ?>
+<node name="/Connection_Interface_Location"
+ xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
+ <tp:copyright>Copyright (C) 2008 Collabora Ltd.</tp:copyright>
+ <tp:copyright>Copyright (C) 2008 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.Connection.Interface.Location.DRAFT"
+ tp:causes-havoc='experimental'>
+ <tp:requires interface="org.freedesktop.Telepathy.Connection"/>
+
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ <p>An interface on connections to support protocols which allow users to
+ publish their current geographical location, and subscribe to the
+ current location of their contacts.</p>
+
+ <p>This interface is geared strongly towards automatic propagation and
+ use of this information, so focuses on latitude, longitude and
+ altitude which can be determined by GPS, although provision is also
+ included for an optional human-readable description of locations. All
+ co-ordinate information is required to be relative to the WGS84
+ datum.</p>
+
+ <p>The information published through this interface is intended to have
+ the same scope as presence information, so will normally be made
+ available to those individuals on the user's "publish" contact list.
+ Even so, user interfaces should not automatically publish location
+ information without the consent of the user, and it is recommended
+ that an option is made available to reduce the accuracy of the
+ reported information to allow the user to maintain their privacy.</p>
+
+ <p>Location information is represented using the terminology of XMPP's
+ <a href="http://www.xmpp.org/extensions/xep-0080.html">XEP-0080</a>
+ or the XEP-0080-derived
+ <a href="http://geoclue.freedesktop.org/">Geoclue</a> API where
+ possible.</p>
+ </tp:docstring>
+
+ <tp:enum name="Location_Accuracy_Level" type="i">
+ <tp:docstring>
+ A location accuracy level. This should be kept in sync with
+ GeoclueAccuracyLevel in the Geoclue project.
+ </tp:docstring>
+
+ <tp:enumvalue suffix="None" value="0">
+ <tp:docstring>
+ The accuracy is unspecified.
+ </tp:docstring>
+ </tp:enumvalue>
+ <tp:enumvalue suffix="Country" value="1">
+ <tp:docstring>
+ The location indicates the contact's country.
+ </tp:docstring>
+ </tp:enumvalue>
+ <tp:enumvalue suffix="Region" value="2">
+ <tp:docstring>
+ The location indicates the contact's region within a country.
+ </tp:docstring>
+ </tp:enumvalue>
+ <tp:enumvalue suffix="Locality" value="3">
+ <tp:docstring>
+ The location indicates the contact's locality within a region
+ (e.g. the correct city).
+ </tp:docstring>
+ </tp:enumvalue>
+ <tp:enumvalue suffix="Postal_Code" value="4">
+ <tp:docstring>
+ The location indicates the correct postal code.
+ </tp:docstring>
+ </tp:enumvalue>
+ <tp:enumvalue suffix="Street" value="5">
+ <tp:docstring>
+ The location indicates the correct street.
+ </tp:docstring>
+ </tp:enumvalue>
+ <tp:enumvalue suffix="Detailed" value="6">
+ <tp:docstring>
+ The location's accuracy is given by the error, horizontal-error-m
+ and/or vertical-error-m keys.
+ </tp:docstring>
+ </tp:enumvalue>
+ </tp:enum>
+
+ <tp:mapping name="Location">
+ <tp:docstring>
+ A user's location, represented as an extensible mapping.
+ </tp:docstring>
+
+ <tp:member name="Key" type="s">
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+
+ <p>Civic addresses are represented by the following well-known
+ keys (all of which have string values), which should be kept in
+ sync with those used in XEP-0080 and in the Geoclue project:</p>
+
+ <ul>
+ <li>countrycode - s: an ISO-3166-1 alpha-2 (two-letter) country
+ code, e.g. "us", "gb", "fr"</li>
+ <li>country - s: a country name in unspecified locale, e.g.
+ "USA"</li>
+ <li>region - s: an administrative region of the nation, such as a
+ state or province</li>
+ <li>locality - s: a locality within the administrative region, such
+ as a town or city</li>
+ <li>area - s: a named area such as a campus or neighborhood</li>
+ <li>postalcode - s: a code used for postal delivery</li>
+ <li>street - s: a thoroughfare within the locality, or a crossing of
+ two thoroughfares</li>
+ </ul>
+
+ <p>The following address keys are defined in XEP-0080 but not by
+ Geoclue, and are also allowed:</p>
+
+ <ul>
+ <li>building - s: a specific building on a street or in an area</li>
+ <li>floor - s: a particular floor in a building</li>
+ <li>room - s: a particular room in a building</li>
+ <li>text - s: any more specific information, e.g.
+ "Northwest corner of the lobby"</li>
+ <li>description - s: A natural-language name for or description of
+ the location, e.g. "Bill's house"</li>
+ <li>uri - s: a URI representing the location or pointing to more
+ information about it</li>
+ </ul>
+
+ <p>Positions are represented by the following well-known keys:</p>
+
+ <ul>
+ <li>lat - d: latitude in decimal degrees north, -90 to +90,
+ relative to the WGS-84 datum
+ <tp:rationale>
+ This is from XEP-0080; the XEP allows use of a different
+ datum, but recommends this one. We enforce sanity by requiring
+ a consistent datum: a minimal compliant implementation of this
+ specification in terms of XEP-0080 would simply ignore the
+ &lt;lat&gt; and &lt;lon&gt; elements if &lt;datum&gt; exists
+ and has a value other than WGS-84, while an advanced
+ implementation might correct for the different datum.
+ </tp:rationale>
+ </li>
+ <li>lon - d: Longitude in decimal degrees east, -180 to +180,
+ relative to the WGS-84 datum
+ <tp:rationale>
+ Same rationale as 'lat'
+ </tp:rationale>
+ </li>
+ <li>alt - d: altitude in metres above sea level (negative
+ if below sea level)
+ <tp:rationale>
+ This is from XEP-0080
+ </tp:rationale>
+ </li>
+ <li>accuracy-level - i (<tp:type>Location_Accuracy_Level</tp:type>):
+ an indication of accuracy, which SHOULD be omitted if it would be
+ Location_Accuracy_Level_None or
+ Location_Accuracy_Level_Detailed
+ <tp:rationale>
+ This is a struct field in GeoClue; the name is new in this
+ specification, and was chosen in an attempt to avoid clashing
+ with any future XEP-0080 terminology.
+ </tp:rationale>
+ </li>
+ <li>error - d: horizontal position error in arc-minutes (1/60
+ degree) if known
+ <tp:rationale>
+ This is from XEP-0080
+ </tp:rationale>
+ </li>
+ <li>vertical-error-m - d: vertical position error in metres if
+ known
+ <tp:rationale>
+ This exists as a struct field in GeoClue; the name is new
+ in this specification.
+ </tp:rationale>
+ </li>
+ <li>horizontal-error-m - d: horizontal position error in metres if
+ known
+ <tp:rationale>
+ This exists as a struct field in GeoClue; the name is new
+ in this specification.
+ </tp:rationale>
+ </li>
+ </ul>
+
+ <p>Velocities are represented by the following well-known keys:</p>
+
+ <ul>
+ <li>speed - d: speed in metres per second
+ <tp:rationale>
+ This is from XEP-0080
+ </tp:rationale>
+ </li>
+ <li>bearing - d: direction of movement in decimal degrees,
+ where North is 0 and East is 90
+ <tp:rationale>
+ This is from XEP-0080, and is equivalent to the struct field
+ called "direction" in GeoClue
+ </tp:rationale>
+ </li>
+ <li>climb - d: rate of change of 'alt' in metres per second
+ <tp:rationale>
+ This is a struct field in GeoClue; the name is new to this
+ specification, but seems uncontroversial
+ </tp:rationale>
+ </li>
+ </ul>
+
+ <p>Other well-known keys:</p>
+
+ <ul>
+ <li>timestamp - t (<tp:type>Unix_Timestamp64</tp:type>): the time
+ that the contact was at this location, in seconds since
+ 1970-01-01T00:00:00Z (i.e. the beginning of 1970 in UTC)
+ <tp:rationale>
+ XEP-0080 uses an ISO 8601 string for this, but a number of
+ seconds since the epoch is probably easier to work with.
+ </tp:rationale>
+ </li>
+ </ul>
+ </tp:docstring>
+ </tp:member>
+
+ <tp:member name="Value" type="v">
+ <tp:docstring>
+ The value corresponding to the well-known key.
+ </tp:docstring>
+ </tp:member>
+ </tp:mapping>
+
+ <tp:mapping name="Contact_Locations" type="a{ua{sv}}">
+ <tp:member name="Contact" type="u" tp:type="Contact_Handle">
+ </tp:member>
+ <tp:member name="Location" type="a{sv}" tp:type="Location">
+ </tp:member>
+ </tp:mapping>
+
+ <method name="GetLocations" tp:name-for-bindings="Get_Locations">
+ <tp:docstring>
+ Return the current locations of the given contacts, if they are
+ already known. If any of the given contacts' locations are not known,
+ request their current locations, and later emit
+ <tp:member-ref>LocationUpdated</tp:member-ref> for them; the
+ <tp:member-ref>LocationUpdated</tp:member-ref> signal for contacts
+ whose location could not be determined will have an empty Location.
+ </tp:docstring>
+
+ <arg direction="in" name="Contacts" type="au" tp:type="Contact_Handle[]">
+ <tp:docstring>
+ The contacts whose locations should be returned or signalled.
+ </tp:docstring>
+ </arg>
+
+ <arg direction="out" name="Locations" type="a{ua{sv}}"
+ tp:type="Contact_Locations">
+ <tp:docstring>
+ The contacts' locations, if already known. Contacts whose locations
+ are not already known are omitted from the mapping; contacts known
+ to have no location information appear in the mapping with an empty
+ Location dictionary.
+ </tp:docstring>
+ </arg>
+ </method>
+
+ <signal name="LocationUpdated" tp:name-for-bindings="Location_Updated">
+ <tp:docstring>
+ Emitted when a contact's location changes or becomes known.
+ </tp:docstring>
+
+ <arg name="Contact" type="u" tp:type="Contact_Handle">
+ <tp:docstring>
+ The contact
+ </tp:docstring>
+ </arg>
+ <arg name="Location" type="a{sv}" tp:type="Location">
+ <tp:docstring>
+ The contact's location, or empty to indicate that nothing is known
+ about the contact's location.
+ </tp:docstring>
+ </arg>
+ </signal>
+
+ <method name="SetLocation" tp:name-for-bindings="SetLocation">
+ <tp:docstring>
+ Set the local user's own location.
+ </tp:docstring>
+
+ <arg direction="in" name="Location" type="a{sv}">
+ <tp:docstring>
+ The location to advertise. If the user wants to obscure their
+ exact location by reducing the precision or accuracy, clients
+ MUST do this themselves, rather than relying on the connection
+ manager to do so. Clients that interact with more than one
+ connection SHOULD advertise the same reduced-accuracy location
+ to all of them, so that contacts cannot obtain an undesirably
+ accurate location by assuming that random errors have been added
+ and averaging the locations advertised on multiple connections.
+ </tp:docstring>
+ </arg>
+ </method>
+
+ <property name="LocationAccessControlTypes" type="au" access="read"
+ tp:type="Rich_Presence_Access_Control_Type[]" tp:name-for-bindings="Location_Access_Control_Types">
+ <tp:docstring>The types of access control that are supported by this
+ connection.</tp:docstring>
+ </property>
+
+ <property name="LocationAccessControl" type="(uv)" access="readwrite"
+ tp:type="Rich_Presence_Access_Control" tp:name-for-bindings="Location_Access_Control">
+ <tp:docstring>The current access control mechanism and settings
+ for this connection. Before publishing location for the first time,
+ if this has not been set by a client, implementations SHOULD
+ set it to be as restrictive as possible (an empty whitelist, if
+ supported).</tp:docstring>
+ </property>
+ </interface>
+</node>
+<!-- vim:set sw=2 sts=2 et ft=xml: -->
diff --git a/extensions/Makefile.am b/extensions/Makefile.am
index f179ebc19..0ed6fc522 100644
--- a/extensions/Makefile.am
+++ b/extensions/Makefile.am
@@ -1,3 +1,5 @@
+include $(top_srcdir)/tools/shave.mk
+
tools_dir = $(top_srcdir)/tools
AM_CPPFLAGS = $(DISABLE_DEPRECATED)
@@ -13,10 +15,8 @@ EXTRA_DIST = \
generic-types.xml \
misc.xml \
Channel_Handler.xml \
+ Connection_Interface_Location.xml \
Tube_Handler.xml \
- Channel_Interface_Tube.xml \
- Channel_Type_DBus_Tube.xml \
- Channel_Type_Stream_Tube.xml \
Debug.xml
noinst_LTLIBRARIES = libemp-extensions.la
@@ -61,45 +61,45 @@ XSLTPROCFLAGS = --nonet --novalid
_gen/all.xml: all.xml $(wildcard *.xml)
$(mkdir_p) _gen
- $(XSLTPROC) $(XSLTPROCFLAGS) --xinclude $(tools_dir)/identity.xsl \
+ $(QUIET_GEN)$(XSLTPROC) $(XSLTPROCFLAGS) --xinclude $(tools_dir)/identity.xsl \
$< > $@
extensions.html: _gen/all.xml $(tools_dir)/doc-generator.xsl
- $(XSLTPROC) $(XSLTPROCFLAGS) \
+ $(QUIET_GEN)$(XSLTPROC) $(XSLTPROCFLAGS) \
--param "allow-undefined-interfaces" "true()" \
$(tools_dir)/doc-generator.xsl \
$< > $@
_gen/gtypes.h _gen/gtypes-body.h: _gen/all.xml \
$(top_srcdir)/tools/glib-gtypes-generator.py
- $(PYTHON) $(top_srcdir)/tools/glib-gtypes-generator.py \
+ $(QUIET_GEN)$(PYTHON) $(top_srcdir)/tools/glib-gtypes-generator.py \
$< _gen/gtypes Emp
_gen/signals-marshal.list: _gen/all.xml \
$(tools_dir)/glib-signals-marshal-gen.py
- $(PYTHON) $(tools_dir)/glib-signals-marshal-gen.py $< > $@
+ $(QUIET_GEN)$(PYTHON) $(tools_dir)/glib-signals-marshal-gen.py $< > $@
_gen/signals-marshal.h: _gen/signals-marshal.list Makefile.am
- $(GLIB_GENMARSHAL) --header --prefix=_emp_ext_marshal $< > $@
+ $(QUIET_GEN)$(GLIB_GENMARSHAL) --header --prefix=_emp_ext_marshal $< > $@
_gen/signals-marshal.c: _gen/signals-marshal.list Makefile.am
- { echo '#include "_gen/signals-marshal.h"' && \
+ $(QUIET_GEN){ echo '#include "_gen/signals-marshal.h"' && \
$(GLIB_GENMARSHAL) --body --prefix=_emp_ext_marshal $< ; } > $@
_gen/register-dbus-glib-marshallers-body.h: _gen/all.xml \
$(tools_dir)/glib-client-marshaller-gen.py
- $(PYTHON) $(tools_dir)/glib-client-marshaller-gen.py $< \
+ $(QUIET_GEN)$(PYTHON) $(tools_dir)/glib-client-marshaller-gen.py $< \
_emp_ext > $@
_gen/enums.h: _gen/all.xml \
$(tools_dir)/c-constants-gen.py
- $(PYTHON) $(tools_dir)/c-constants-gen.py \
+ $(QUIET_GEN)$(PYTHON) $(tools_dir)/c-constants-gen.py \
Emp \
$< > $@
_gen/interfaces-body.h _gen/interfaces.h: _gen/all.xml \
$(tools_dir)/glib-interfaces-gen.py
- $(PYTHON) $(tools_dir)/glib-interfaces-gen.py \
+ $(QUIET_GEN)$(PYTHON) $(tools_dir)/glib-interfaces-gen.py \
Emp _gen/interfaces-body.h _gen/interfaces.h $<
# Generated files which must be generated per "category". Each TpProxy
@@ -108,12 +108,12 @@ _gen/interfaces-body.h _gen/interfaces.h: _gen/all.xml \
_gen/misc.xml: misc.xml $(wildcard *.xml)
$(mkdir_p) _gen
- $(XSLTPROC) $(XSLTPROCFLAGS) --xinclude $(tools_dir)/identity.xsl \
+ $(QUIET_GEN)$(XSLTPROC) $(XSLTPROCFLAGS) --xinclude $(tools_dir)/identity.xsl \
$< > $@
_gen/cli-misc-body.h _gen/cli-misc.h: _gen/misc.xml \
$(tools_dir)/glib-client-gen.py
- $(PYTHON) $(tools_dir)/glib-client-gen.py \
+ $(QUIET_GEN)$(PYTHON) $(tools_dir)/glib-client-gen.py \
--group=misc \
--subclass=TpProxy \
--subclass-assert=TP_IS_PROXY \
@@ -123,7 +123,7 @@ _gen/cli-misc-body.h _gen/cli-misc.h: _gen/misc.xml \
_gen/svc-misc.c _gen/svc-misc.h: _gen/misc.xml \
$(tools_dir)/glib-ginterface-gen.py
- $(PYTHON) $(tools_dir)/glib-ginterface-gen.py \
+ $(QUIET_GEN)$(PYTHON) $(tools_dir)/glib-ginterface-gen.py \
--filename=_gen/svc-misc \
--signal-marshal-prefix=_emp_ext \
--include='<telepathy-glib/dbus.h>' \
diff --git a/extensions/all.xml b/extensions/all.xml
index c9f4c0bd7..85d9dde68 100644
--- a/extensions/all.xml
+++ b/extensions/all.xml
@@ -28,6 +28,18 @@
from="Telepathy specification"/>
<tp:external-type name="Tube_ID" type="u"
from="Telepathy specification"/>
+
+ <!-- for localisation -->
+ <tp:external-type name="Rich_Presence_Access_Control_Type" type="u"
+ from="Telepathy specification"/>
+ <tp:external-type name="Rich_Presence_Access_Control" type="(uv)"
+ from="Telepathy specification"/>
+ <tp:external-type name="Unix_Timestamp64" type="t"
+ from="Telepathy specification"/>
+ <tp:external-type name="Unix_Timestamp" type="u"
+ from="Telepathy specification"/>
+ <tp:external-type name="String_String_Map" type="a{ss}"
+ from="Telepathy specification"/>
</tp:generic-types>
diff --git a/extensions/misc.xml b/extensions/misc.xml
index 38e802e97..dd3125fb2 100644
--- a/extensions/misc.xml
+++ b/extensions/misc.xml
@@ -6,9 +6,7 @@
<xi:include href="Channel_Handler.xml"/>
<xi:include href="Tube_Handler.xml"/>
-<xi:include href="Channel_Interface_Tube.xml" />
-<xi:include href="Channel_Type_DBus_Tube.xml" />
-<xi:include href="Channel_Type_Stream_Tube.xml" />
+<xi:include href="Connection_Interface_Location.xml"/>
<xi:include href="Debug.xml" />
</tp:spec>