[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