[Telepathy-commits] [telepathy-mission-control/master] SetSelfCapabilities: call the dispatcher to get the supported caps of clients

Alban Crequy alban.crequy at collabora.co.uk
Fri Nov 14 04:18:24 PST 2008


---
 src/mcd-connection.c |    7 +++----
 src/mcd-dispatcher.c |   25 +++++++++++++++++++++++++
 src/mcd-dispatcher.h |    6 ++++++
 3 files changed, 34 insertions(+), 4 deletions(-)

diff --git a/src/mcd-connection.c b/src/mcd-connection.c
index 48ee62e..5d17192 100644
--- a/src/mcd-connection.c
+++ b/src/mcd-connection.c
@@ -520,7 +520,6 @@ static void
 _mcd_connection_setup_contact_capabilities (McdConnection *connection)
 {
     McdConnectionPrivate *priv = MCD_CONNECTION_PRIV (connection);
-    GPtrArray *capabilities;
     GPtrArray *contact_capabilities;
     const gchar *removed = NULL;
     const gchar *protocol_name;
@@ -533,11 +532,11 @@ _mcd_connection_setup_contact_capabilities (McdConnection *connection)
 	return;
     }
     protocol_name = mcd_account_get_protocol_name (priv->account);
-    capabilities = mcd_dispatcher_get_channel_capabilities (priv->dispatcher,
-							    protocol_name);
+    contact_capabilities = mcd_dispatcher_get_channel_enhanced_capabilities
+      (priv->dispatcher, protocol_name);
+
     g_debug ("%s: advertising capabilities", G_STRFUNC);
 
-    contact_capabilities = g_ptr_array_new ();
     mc_cli_connection_interface_contact_capabilities_call_set_self_capabilities
       (priv->tp_conn, -1, contact_capabilities, NULL, NULL, NULL, NULL);
     g_debug ("SetSelfCapabilities: Called.");
diff --git a/src/mcd-dispatcher.c b/src/mcd-dispatcher.c
index 7844644..614e351 100644
--- a/src/mcd-dispatcher.c
+++ b/src/mcd-dispatcher.c
@@ -2298,6 +2298,31 @@ GPtrArray *mcd_dispatcher_get_channel_capabilities (McdDispatcher * dispatcher,
     return args.channel_handler_caps;
 }
 
+static void
+_channel_enhanced_capabilities (McdClient *client,
+                                McdDispatcherArgs *args)
+{
+  /* TODO */
+}
+
+
+GPtrArray *
+mcd_dispatcher_get_channel_enhanced_capabilities (McdDispatcher * dispatcher,
+                                                  const gchar *protocol)
+{
+    McdDispatcherPrivate *priv = dispatcher->priv;
+    McdDispatcherArgs args;
+
+    args.dispatcher = dispatcher;
+    args.protocol = protocol;
+    args.channel_handler_caps = g_ptr_array_new ();
+
+    g_list_foreach (priv->clients, (GFunc) _channel_enhanced_capabilities,
+        &args);
+
+    return args.channel_handler_caps;
+}
+
 const gchar *
 mcd_dispatcher_context_get_protocol_name (McdDispatcherContext *context)
 {
diff --git a/src/mcd-dispatcher.h b/src/mcd-dispatcher.h
index 080bcd4..0ae1d77 100644
--- a/src/mcd-dispatcher.h
+++ b/src/mcd-dispatcher.h
@@ -86,6 +86,12 @@ gint mcd_dispatcher_get_channel_type_usage (McdDispatcher * dispatcher,
 GPtrArray *mcd_dispatcher_get_channel_capabilities (McdDispatcher * dispatcher,
 						    const gchar *protocol);
 
+/* retrieves the channel handlers' capabilities, in a format suitable for being
+ * used as a parameter for the telepathy "SetSelfCapabilities" method */
+GPtrArray *mcd_dispatcher_get_channel_enhanced_capabilities (
+    McdDispatcher * dispatcher,
+    const gchar *protocol);
+
 /* not exported */
 void _mcd_dispatcher_add_request (McdDispatcher *dispatcher,
                                   McdAccount *account, McdChannel *channel);
-- 
1.5.6.5




More information about the Telepathy-commits mailing list