[Telepathy-commits] [telepathy-salut/master] factor out salut_ft_manager_channel_created and call it in message_stanza_callback

Guillaume Desmottes guillaume.desmottes at collabora.co.uk
Mon Mar 16 09:09:30 PDT 2009


---
 src/salut-ft-manager.c |   39 ++++++++++++++++++++++++++-------------
 1 files changed, 26 insertions(+), 13 deletions(-)

diff --git a/src/salut-ft-manager.c b/src/salut-ft-manager.c
index 8717574..e55be57 100644
--- a/src/salut-ft-manager.c
+++ b/src/salut-ft-manager.c
@@ -47,6 +47,8 @@ static void caps_channel_manager_iface_init (gpointer, gpointer);
 static SalutFileTransferChannel *
 salut_ft_manager_new_channel (SalutFtManager *mgr, TpHandle handle,
     gboolean requested, GError **error);
+static void salut_ft_manager_channel_created (SalutFtManager *mgr,
+    SalutFileTransferChannel *chan, gpointer request_token);
 
 G_DEFINE_TYPE_WITH_CODE (SalutFtManager, salut_ft_manager, G_TYPE_OBJECT,
     G_IMPLEMENT_INTERFACE (TP_TYPE_CHANNEL_MANAGER,
@@ -119,6 +121,8 @@ message_stanza_callback (SalutXmppConnectionManager *mgr,
       tp_channel_manager_emit_new_channel (self, TP_EXPORTABLE_CHANNEL (chan),
           NULL);
     }
+
+  salut_ft_manager_channel_created (self, chan, NULL);
 }
 
 static void salut_ft_manager_dispose (GObject *object);
@@ -269,6 +273,27 @@ generate_object_path (SalutFtManager *self,
   return path;
 }
 
+static void
+salut_ft_manager_channel_created (SalutFtManager *self,
+                                  SalutFileTransferChannel *chan,
+                                  gpointer request_token)
+{
+  SalutFtManagerPrivate *priv = SALUT_FT_MANAGER_GET_PRIVATE (self);
+  GSList *requests = NULL;
+
+  g_signal_connect (chan, "closed", G_CALLBACK (file_channel_closed_cb), self);
+
+  priv->channels = g_list_append (priv->channels, chan);
+
+  if (request_token != NULL)
+    requests = g_slist_prepend (requests, request_token);
+
+  tp_channel_manager_emit_new_channel (self, TP_EXPORTABLE_CHANNEL (chan),
+      requests);
+
+  g_slist_free (requests);
+}
+
 static SalutFileTransferChannel *
 salut_ft_manager_new_channel (SalutFtManager *mgr,
                               TpHandle handle,
@@ -315,20 +340,12 @@ salut_ft_manager_new_channel (SalutFtManager *mgr,
 
   path = generate_object_path (mgr, handle);
 
-
   chan = salut_file_transfer_channel_new (priv->connection, contact, path,
       handle, priv->xmpp_connection_manager, initiator, state);
 
   g_object_unref (contact);
   g_free (path);
 
-  /* Don't fire the new channel signal now so the caller of this function can
-   * set the extra properties on the ft channel. */
-
-  g_signal_connect (chan, "closed", G_CALLBACK (file_channel_closed_cb), mgr);
-
-  priv->channels = g_list_append (priv->channels, chan);
-
   return chan;
 }
 
@@ -349,7 +366,6 @@ salut_ft_manager_handle_request (TpChannelManager *manager,
   TpFileHashType content_hash_type;
   GError *error = NULL;
   gboolean valid;
-  GSList *requests = NULL;
 
   DEBUG ("File transfer request");
 
@@ -476,10 +492,7 @@ salut_ft_manager_handle_request (TpChannelManager *manager,
       goto error;
     }
 
-  requests = g_slist_prepend (requests, request_token);
-  tp_channel_manager_emit_new_channel (manager, TP_EXPORTABLE_CHANNEL (chan),
-      requests);
-  g_slist_free (requests);
+  salut_ft_manager_channel_created (self, chan, request_token);
 
   return TRUE;
 
-- 
1.5.6.5




More information about the telepathy-commits mailing list