summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2014-02-07 13:05:39 +0000
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2014-02-07 14:16:08 +0000
commit33430f006934add269f6858dc7b9af6eadbc30ca (patch)
treeadbfbdfc8e23c8b02fb116054ae5c8516ad2659c
parentc349b4aa5c4cd7f5c36b0952b8b6caef799379b8 (diff)
downloadtelepathy-salut-33430f006934add269f6858dc7b9af6eadbc30ca.tar.gz
Use telepathy-glib for Sidecars1 interface
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=70382 Reviewed-by: Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
-rw-r--r--extensions/Connection_Future.xml110
-rw-r--r--extensions/Makefile.am1
-rw-r--r--extensions/all.xml1
-rw-r--r--src/connection.c20
-rw-r--r--tests/twisted/sidecars.py10
5 files changed, 15 insertions, 127 deletions
diff --git a/extensions/Connection_Future.xml b/extensions/Connection_Future.xml
deleted file mode 100644
index 11047983..00000000
--- a/extensions/Connection_Future.xml
+++ /dev/null
@@ -1,110 +0,0 @@
-<?xml version="1.0" ?>
-<node name="/Connection_FUTURE"
- xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"
- >
- <tp:copyright>Copyright © 2009 Collabora Limited</tp:copyright>
- <tp:copyright>Copyright © 2009 Nokia Corporation</tp:copyright>
- <tp:license xmlns="http://www.w3.org/1999/xhtml">
-<p>This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Lesser General Public
-License as published by the Free Software Foundation; either
-version 2.1 of the License, or (at your option) any later version.</p>
-
-<p>This library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-Lesser General Public License for more details.</p>
-
-<p>You should have received a copy of the GNU Lesser General Public
-License along with this library; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-USA.</p>
- </tp:license>
- <interface name="org.freedesktop.Telepathy.Connection.FUTURE"
- tp:causes-havoc='experimental'>
- <tp:requires interface="org.freedesktop.Telepathy.Connection"/>
-
- <method name="EnsureSidecar" tp:name-for-bindings="Ensure_Sidecar">
- <tp:added version="0.19.UNRELEASED"/>
-
- <arg direction="in" name="Main_Interface" type="s"
- tp:type="DBus_Interface">
- <tp:docstring>
- The "primary" interface implemented by an object attached
- to a connection. For example, a Gabble plugin implementing
- fine-grained control of XEP-0016 privacy lists might expose an object
- implementing <tt>com.example.PrivacyLists</tt>.
- </tp:docstring>
- </arg>
-
- <arg direction="out" name="Path" type="o">
- <tp:docstring>The object path of the sidecar, exported by the same bus
- name as the Connection to which it is attached.</tp:docstring>
- </arg>
- <arg direction="out" name="Properties" type="a{sv}"
- tp:type="Qualified_Property_Value_Map">
- <tp:docstring>Immutable properties of the sidecar.</tp:docstring>
- </arg>
-
- <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
- <p>Request an object with a particular interface providing additional
- connection-specific functionality, together with its immutable
- properties. These will often be implemented by plug-ins to the
- connection managers; for example, support for an XMPP XEP for which
- no generic Telepathy interface exists might be implemented by a
- Gabble plugin exposing a sidecar with a particular interface.</p>
-
- <p>This method may be called at any point during the lifetime of a
- connection, even before its <tp:type>Connection_Status</tp:type>
- changes to Connected. It MAY take a long time to
- return—perhaps it needs to wait for a connection to be established
- and for all the services supported by the server to be discovered
- before determining whether necessary server-side support is
- available—so callers SHOULD override the default method timeout (25
- seconds) with a much higher value (perhaps even MAX_INT32, meaning
- “no timeout” in recent versions of libdbus).</p>
-
- <tp:rationale>
- <p>There is an implicit assumption that any connection
- manager plugin will only want to export one “primary” object per
- feature it implements, since there is a one-to-one mapping between
- interface and object. This is reasonable since Sidecars are
- (intended to be) analogous to extra interfaces on the connection,
- providing once-per-connection shared functionality; it also makes
- client code straightforward (look up the interface you care about
- in a dictionary, build a proxy object from the value). More
- “plural” plugins are likely to want to implement new types of
- <tp:dbus-ref
- namespace="org.freedesktop.Telepathy">Channel</tp:dbus-ref>
- instead.</p>
- </tp:rationale>
- </tp:docstring>
-
- <tp:error name="org.freedesktop.Telepathy.Error.NotImplemented">
- <tp:docstring>
- The requested sidecar is not implemented by this connection manager,
- or a necessary server-side component does not exist. (FIXME: split
- these two errors out? Then again, once we list the guaranteed and
- possible sidecars on a Protocol object, clients can tell the
- difference themselves, because they shouldn't be calling this in the
- first case.)
- </tp:docstring>
- </tp:error>
-
- <tp:error name="org.freedesktop.Telepathy.Error.ServiceBusy">
- <tp:docstring>
- A server-side component needed by the requested sidecar reported it
- is currently too busy, or did not respond for some
- implementation-defined time. The caller may wish to try again later.
- </tp:docstring>
- </tp:error>
-
- <tp:error name="org.freedesktop.Telepathy.Error.Cancelled">
- <tp:docstring>
- The connection was disconnected while the sidecar was being set up.
- </tp:docstring>
- </tp:error>
- </method>
-
- </interface>
-</node>
diff --git a/extensions/Makefile.am b/extensions/Makefile.am
index 39f94e96..288894c3 100644
--- a/extensions/Makefile.am
+++ b/extensions/Makefile.am
@@ -5,7 +5,6 @@ EXTRA_DIST = \
OLPC_Activity_Properties.xml \
connection.xml \
Salut_Plugin_Test.xml \
- Connection_Future.xml \
all.xml
noinst_LTLIBRARIES = libsalut-extensions.la
diff --git a/extensions/all.xml b/extensions/all.xml
index befed66d..65951e14 100644
--- a/extensions/all.xml
+++ b/extensions/all.xml
@@ -24,7 +24,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA</p>
<xi:include href="connection.xml"/>
<xi:include href="Salut_Plugin_Test.xml"/>
-<xi:include href="Connection_Future.xml"/>
<tp:generic-types>
<tp:external-type name="Contact_Handle" type="u"
diff --git a/src/connection.c b/src/connection.c
index a0e19e4d..de434a91 100644
--- a/src/connection.c
+++ b/src/connection.c
@@ -101,7 +101,7 @@ static void
salut_plugin_connection_iface_init (SalutPluginConnectionInterface *iface,
gpointer iface_data);
-static void salut_conn_future_iface_init (gpointer, gpointer);
+static void salut_conn_sidecars_iface_init (gpointer, gpointer);
#define DISCONNECT_TIMEOUT 5
@@ -125,8 +125,8 @@ G_DEFINE_TYPE_WITH_CODE(SalutConnection,
salut_conn_contact_caps_iface_init);
G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_CONTACT_INFO,
salut_conn_contact_info_iface_init);
- G_IMPLEMENT_INTERFACE (SALUT_TYPE_SVC_CONNECTION_FUTURE,
- salut_conn_future_iface_init);
+ G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_SIDECARS1,
+ salut_conn_sidecars_iface_init);
G_IMPLEMENT_INTERFACE (SALUT_TYPE_PLUGIN_CONNECTION,
salut_plugin_connection_iface_init);
#ifdef ENABLE_OLPC
@@ -721,7 +721,7 @@ static const gchar *interfaces [] = {
TP_IFACE_CONNECTION_INTERFACE_CONTACT_CAPABILITIES,
TP_IFACE_CONNECTION_INTERFACE_CONTACT_INFO,
TP_IFACE_CONNECTION_INTERFACE_CONTACT_LIST,
- SALUT_IFACE_CONNECTION_FUTURE,
+ TP_IFACE_CONNECTION_INTERFACE_SIDECARS1,
#ifdef ENABLE_OLPC
SALUT_IFACE_OLPC_BUDDY_INFO,
SALUT_IFACE_OLPC_ACTIVITY_PROPERTIES,
@@ -3965,7 +3965,7 @@ create_sidecar_cb (
GList *l;
for (l = contexts; l != NULL; l = l->next)
- salut_svc_connection_future_return_from_ensure_sidecar (l->data,
+ tp_svc_connection_interface_sidecars1_return_from_ensure_sidecar (l->data,
path, props);
g_hash_table_unref (props);
@@ -3987,7 +3987,7 @@ out:
static void
salut_connection_ensure_sidecar (
- SalutSvcConnectionFUTURE *iface,
+ TpSvcConnectionInterfaceSidecars1 *iface,
const gchar *sidecar_iface,
DBusGMethodInvocation *context)
{
@@ -4026,7 +4026,7 @@ salut_connection_ensure_sidecar (
GHashTable *props = salut_sidecar_get_immutable_properties (sidecar);
DEBUG ("sidecar %s already exists at %s", sidecar_iface, path);
- salut_svc_connection_future_return_from_ensure_sidecar (context, path,
+ tp_svc_connection_interface_sidecars1_return_from_ensure_sidecar (context, path,
props);
g_free (path);
@@ -4130,13 +4130,13 @@ sidecars_conn_status_changed_cb (
}
static void
-salut_conn_future_iface_init (gpointer g_iface,
+salut_conn_sidecars_iface_init (gpointer g_iface,
gpointer iface_data)
{
- SalutSvcConnectionFUTUREClass *klass = g_iface;
+ TpSvcConnectionInterfaceSidecars1Class *klass = g_iface;
#define IMPLEMENT(x) \
- salut_svc_connection_future_implement_##x (\
+ tp_svc_connection_interface_sidecars1_implement_##x (\
klass, salut_connection_##x)
IMPLEMENT(ensure_sidecar);
#undef IMPLEMENT
diff --git a/tests/twisted/sidecars.py b/tests/twisted/sidecars.py
index 26a7b67c..70627dbb 100644
--- a/tests/twisted/sidecars.py
+++ b/tests/twisted/sidecars.py
@@ -18,7 +18,7 @@ if not PLUGINS_ENABLED:
def test(q, bus, conn):
# Request a sidecar thate we support before we're connected; it should just
# wait around until we're connected.
- call_async(q, conn.Future, 'EnsureSidecar', TEST_PLUGIN_IFACE)
+ call_async(q, conn.Sidecars1, 'EnsureSidecar', TEST_PLUGIN_IFACE)
conn.Connect()
@@ -30,18 +30,18 @@ def test(q, bus, conn):
assertEquals({}, props)
# We should get the same sidecar if we request it again
- path2, props2 = conn.Future.EnsureSidecar(TEST_PLUGIN_IFACE)
+ path2, props2 = conn.Sidecars1.EnsureSidecar(TEST_PLUGIN_IFACE)
assertEquals((path, props), (path2, props2))
else:
# Only now does it fail.
q.expect('dbus-error', method='EnsureSidecar')
# This is not a valid interface name
- call_async(q, conn.Future, 'EnsureSidecar', 'not an interface')
+ call_async(q, conn.Sidecars1, 'EnsureSidecar', 'not an interface')
q.expect('dbus-error', name=cs.INVALID_ARGUMENT)
# The test plugin makes no reference to this interface.
- call_async(q, conn.Future, 'EnsureSidecar', 'unsupported.sidecar')
+ call_async(q, conn.Sidecars1, 'EnsureSidecar', 'unsupported.sidecar')
q.expect('dbus-error', name=cs.NOT_IMPLEMENTED)
call_async(q, conn, 'Disconnect')
@@ -51,7 +51,7 @@ def test(q, bus, conn):
args=[cs.CONN_STATUS_DISCONNECTED, cs.CSR_REQUESTED]),
)
- call_async(q, conn.Future, 'EnsureSidecar', 'zomg.what')
+ call_async(q, conn.Sidecars1, 'EnsureSidecar', 'zomg.what')
# With older telepathy-glib this would be DISCONNECTED;
# with newer telepathy-glib the Connection disappears from the bus
# sooner, and you get UnknownMethod or something from dbus-glib.