[Telepathy-commits] [telepathy-salut/master] replace salut_file_transfer_channel_received_file_offer by salut_file_transfer_channel_new_from_stanza

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


---
 src/salut-file-transfer-channel.c |   90 ++++++++++++++++++++----------------
 src/salut-file-transfer-channel.h |   10 +++--
 src/salut-ft-manager.c            |   14 +-----
 3 files changed, 59 insertions(+), 55 deletions(-)

diff --git a/src/salut-file-transfer-channel.c b/src/salut-file-transfer-channel.c
index d4ada89..ea5ac57 100644
--- a/src/salut-file-transfer-channel.c
+++ b/src/salut-file-transfer-channel.c
@@ -1032,46 +1032,6 @@ xmpp_connection_manager_new_connection_cb (SalutXmppConnectionManager *mgr,
   send_file_offer (channel);
 }
 
-gboolean
-salut_file_transfer_channel_received_file_offer (SalutFileTransferChannel *self,
-                                                 GibberXmppStanza *stanza,
-                                                 GibberXmppConnection *conn,
-                                                 SalutContact *contact)
-{
-  GibberFileTransfer *ft;
-
-  salut_xmpp_connection_manager_take_connection (
-      self->priv->xmpp_connection_manager , conn);
-  ft = gibber_file_transfer_new_from_stanza_with_from (stanza, conn,
-    contact->name);
-
-  if (ft == NULL)
-    {
-      /* Reply with an error */
-      GibberXmppStanza *reply;
-
-      reply = gibber_iq_helper_new_error_reply (stanza, XMPP_ERROR_BAD_REQUEST,
-          "failed to parse file offer");
-      gibber_xmpp_connection_send (conn, reply, NULL);
-      return FALSE;
-    }
-
-  g_signal_connect (ft, "error", G_CALLBACK (error_cb), self);
-
-  DEBUG ("Received file offer with id '%s'", ft->id);
-
-  self->priv->ft = ft;
-
-  g_object_set (self,
-      "filename", ft->filename,
-      "size", gibber_file_transfer_get_size (ft),
-      "description", ft->description,
-      "content-type", ft->content_type,
-      NULL);
-
-  return TRUE;
-}
-
 static void
 salut_file_transfer_channel_set_state (
     TpSvcChannelTypeFileTransfer *iface,
@@ -1575,3 +1535,53 @@ salut_file_transfer_channel_new (SalutConnection *conn,
       "state", state,
       NULL);
 }
+
+SalutFileTransferChannel *
+salut_file_transfer_channel_new_from_stanza (SalutConnection *connection,
+                                             SalutContact *contact,
+                                             const gchar *path,
+                                             TpHandle handle,
+                                             SalutXmppConnectionManager *xcm,
+                                             TpFileTransferState state,
+                                             GibberXmppStanza *stanza,
+                                             GibberXmppConnection *conn)
+{
+  GibberFileTransfer *ft;
+  SalutFileTransferChannel *chan;
+
+  salut_xmpp_connection_manager_take_connection (xcm , conn);
+  ft = gibber_file_transfer_new_from_stanza (stanza, conn);
+
+  if (ft == NULL)
+    {
+      /* Reply with an error */
+      GibberXmppStanza *reply;
+
+      reply = gibber_iq_helper_new_error_reply (stanza, XMPP_ERROR_BAD_REQUEST,
+          "failed to parse file offer");
+      gibber_xmpp_connection_send (conn, reply, NULL);
+      return FALSE;
+    }
+
+  DEBUG ("Received file offer with id '%s'", ft->id);
+
+  chan = g_object_new (SALUT_TYPE_FILE_TRANSFER_CHANNEL,
+      "connection", connection,
+      "contact", contact,
+      "object-path", path,
+      "handle", handle,
+      "xmpp-connection-manager", xcm,
+      "initiator-handle", handle,
+      "state", state,
+      "filename", ft->filename,
+      "size", gibber_file_transfer_get_size (ft),
+      "description", ft->description,
+      "content-type", ft->content_type,
+      NULL);
+
+  chan->priv->ft = ft;
+
+  g_signal_connect (ft, "error", G_CALLBACK (error_cb), chan);
+
+  return chan;
+}
diff --git a/src/salut-file-transfer-channel.h b/src/salut-file-transfer-channel.h
index 075f2cb..b569ae5 100644
--- a/src/salut-file-transfer-channel.h
+++ b/src/salut-file-transfer-channel.h
@@ -71,10 +71,6 @@ GType salut_file_transfer_channel_get_type (void);
   (G_TYPE_INSTANCE_GET_CLASS ((obj), SALUT_TYPE_FILE_TRANSFER_CHANNEL, \
                               SalutFileTransferChannelClass))
 
-gboolean salut_file_transfer_channel_received_file_offer (
-    SalutFileTransferChannel *self, GibberXmppStanza *stanza,
-    GibberXmppConnection *conn, SalutContact *contact);
-
 gboolean salut_file_transfer_channel_offer_file (SalutFileTransferChannel *self,
     GError **error);
 
@@ -83,6 +79,12 @@ SalutFileTransferChannel * salut_file_transfer_channel_new (
     TpHandle handle, SalutXmppConnectionManager *xcm, TpHandle initiator_handle,
     TpFileTransferState state);
 
+SalutFileTransferChannel * salut_file_transfer_channel_new_from_stanza (
+    SalutConnection *connection, SalutContact *contact, const gchar *path,
+    TpHandle handle, SalutXmppConnectionManager *xcm,
+    TpFileTransferState state, GibberXmppStanza *stanza,
+    GibberXmppConnection *conn);
+
 G_END_DECLS
 
 #endif /* #ifndef __SALUT_FILE_TRANSFER_CHANNEL_H__*/
diff --git a/src/salut-ft-manager.c b/src/salut-ft-manager.c
index b90c7b7..4d53920 100644
--- a/src/salut-ft-manager.c
+++ b/src/salut-ft-manager.c
@@ -131,17 +131,9 @@ message_stanza_callback (SalutXmppConnectionManager *mgr,
 
   path = generate_object_path (self, handle);
 
-  chan = salut_file_transfer_channel_new (priv->connection, contact, path,
-      handle, priv->xmpp_connection_manager, handle,
-      TP_FILE_TRANSFER_STATE_PENDING);
-
-  /* This will set the extra properties on the ft channel */
-  if (salut_file_transfer_channel_received_file_offer (chan, stanza, conn,
-        contact))
-    {
-      tp_channel_manager_emit_new_channel (self, TP_EXPORTABLE_CHANNEL (chan),
-          NULL);
-    }
+  chan = salut_file_transfer_channel_new_from_stanza (priv->connection,
+      contact, path, handle, priv->xmpp_connection_manager,
+      TP_FILE_TRANSFER_STATE_PENDING, stanza, conn);
 
   salut_ft_manager_channel_created (self, chan, NULL);
 
-- 
1.5.6.5




More information about the telepathy-commits mailing list