[Telepathy-commits] [telepathy-salut/master] Moved size property from GibberFileTransfer public struct to private struct and added accessors.

Jonny Lamb jonny.lamb at collabora.co.uk
Fri Nov 21 03:46:31 PST 2008


Signed-off-by: Jonny Lamb <jonny.lamb at collabora.co.uk>
---
 lib/gibber/gibber-file-transfer.c     |   15 +++++++++++++++
 lib/gibber/gibber-file-transfer.h     |    5 ++---
 lib/gibber/gibber-oob-file-transfer.c |   19 ++++++++++++++-----
 src/salut-file-channel.c              |    4 ++--
 4 files changed, 33 insertions(+), 10 deletions(-)

diff --git a/lib/gibber/gibber-file-transfer.c b/lib/gibber/gibber-file-transfer.c
index 95a72e3..954acdd 100644
--- a/lib/gibber/gibber-file-transfer.c
+++ b/lib/gibber/gibber-file-transfer.c
@@ -63,6 +63,8 @@ enum
 struct _GibberFileTransferPrivate
 {
   GibberXmppConnection *connection;
+
+  guint64 size;
 };
 
 
@@ -372,6 +374,19 @@ gibber_file_transfer_emit_error (GibberFileTransfer *self,
       error->message);
 }
 
+void
+gibber_file_transfer_set_size (GibberFileTransfer *self,
+                               guint64 size)
+{
+  self->priv->size = size;
+}
+
+guint64
+gibber_file_transfer_get_size (GibberFileTransfer *self)
+{
+  return self->priv->size;
+}
+
 gboolean
 gibber_file_transfer_send_stanza (GibberFileTransfer *self,
                                   GibberXmppStanza *stanza,
diff --git a/lib/gibber/gibber-file-transfer.h b/lib/gibber/gibber-file-transfer.h
index fafbe43..561040a 100644
--- a/lib/gibber/gibber-file-transfer.h
+++ b/lib/gibber/gibber-file-transfer.h
@@ -79,8 +79,6 @@ struct _GibberFileTransfer
   gchar *filename;
 
   GibberFileTransferDirection direction;
-
-  guint64 size;
 };
 
 GType gibber_file_transfer_get_type(void);
@@ -112,7 +110,6 @@ void gibber_file_transfer_send (GibberFileTransfer *self, GIOChannel *src);
 void gibber_file_transfer_receive (GibberFileTransfer *self, GIOChannel *dest);
 void gibber_file_transfer_cancel (GibberFileTransfer *self, guint error_code);
 
-
 /* these functions should only be used by backends */
 /* FIXME move to a private header if gibber becomes a public library */
 
@@ -121,6 +118,8 @@ gboolean gibber_file_transfer_send_stanza (GibberFileTransfer *self,
 
 void gibber_file_transfer_emit_error (GibberFileTransfer *self, GError *error);
 
+void gibber_file_transfer_set_size (GibberFileTransfer *self, guint64 size);
+guint64 gibber_file_transfer_get_size (GibberFileTransfer *self);
 
 G_END_DECLS
 
diff --git a/lib/gibber/gibber-oob-file-transfer.c b/lib/gibber/gibber-oob-file-transfer.c
index 3bdacca..ab7185c 100644
--- a/lib/gibber/gibber-oob-file-transfer.c
+++ b/lib/gibber/gibber-oob-file-transfer.c
@@ -211,7 +211,8 @@ gibber_oob_file_transfer_new_from_stanza (GibberXmppStanza *stanza,
 
   size = gibber_xmpp_node_get_attribute (url_node, "size");
   if (size != NULL)
-    GIBBER_FILE_TRANSFER (self)->size = g_ascii_strtoull (size, NULL, 0);
+    gibber_file_transfer_set_size (GIBBER_FILE_TRANSFER (self),
+      g_ascii_strtoull (size, NULL, 0));
 
   self->priv->url = url;
 
@@ -259,6 +260,7 @@ http_client_finished_chunks_cb (SoupMessage *msg,
   GibberOobFileTransfer *self = user_data;
   GibberXmppStanza *stanza;
   GError *error = NULL;
+  guint64 size;
 
   /* disconnect from the "got_chunk" signal */
   g_signal_handlers_disconnect_by_func (msg, http_client_chunk_cb, user_data);
@@ -266,11 +268,13 @@ http_client_finished_chunks_cb (SoupMessage *msg,
   g_io_channel_unref (self->priv->channel);
   self->priv->channel = NULL;
 
+  size = gibber_file_transfer_get_size (GIBBER_FILE_TRANSFER (self));
+
   /* Is the transfer actually incomplete? */
-  if (GIBBER_FILE_TRANSFER (self)->size > self->priv->transferred_bytes)
+  if (size > self->priv->transferred_bytes)
     {
       DEBUG ("File transfer incomplete (size is %llu and only got %llu)",
-          GIBBER_FILE_TRANSFER (self)->size, self->priv->transferred_bytes);
+          size, self->priv->transferred_bytes);
       g_signal_emit_by_name (self, "canceled");
       return;
     }
@@ -367,6 +371,8 @@ create_transfer_offer (GibberOobFileTransfer *self,
   gchar *url;
   gchar *served_name;
 
+  guint64 size;
+
   g_object_get (GIBBER_FILE_TRANSFER (self), "connection", &connection, NULL);
   transport = GIBBER_FD_TRANSPORT (connection->transport);
   if (transport == NULL)
@@ -403,11 +409,14 @@ create_transfer_offer (GibberOobFileTransfer *self,
 
   url_node = gibber_xmpp_node_add_child_with_content (query_node, "url", url);
   gibber_xmpp_node_set_attribute (url_node, "type", "file");
+
+  size = gibber_file_transfer_get_size (GIBBER_FILE_TRANSFER (self));
+
   /* FIXME 0 could be a valid size */
-  if (GIBBER_FILE_TRANSFER (self)->size > 0)
+  if (size > 0)
     {
       gchar *size_str = g_strdup_printf ("%" G_GUINT64_FORMAT,
-          GIBBER_FILE_TRANSFER (self)->size);
+          size);
       gibber_xmpp_node_set_attribute (url_node, "size", size_str);
       g_free (size_str);
     }
diff --git a/src/salut-file-channel.c b/src/salut-file-channel.c
index ede23e1..ab76a78 100644
--- a/src/salut-file-channel.c
+++ b/src/salut-file-channel.c
@@ -808,7 +808,7 @@ send_file_offer (SalutFileChannel *self)
   g_signal_connect (ft, "transferred-chunk",
       G_CALLBACK (ft_transferred_chunk_cb), self);
 
-  ft->size = self->priv->size;
+  gibber_file_transfer_set_size (ft, self->priv->size);
 
   gibber_file_transfer_offer (ft);
 }
@@ -848,7 +848,7 @@ salut_file_channel_received_file_offer (SalutFileChannel *self,
   self->priv->ft = ft;
 
   self->priv->filename = g_strdup (ft->filename);
-  self->priv->size = ft->size;
+  self->priv->size = gibber_file_transfer_get_size (ft);
 }
 
 static void
-- 
1.5.6.5




More information about the Telepathy-commits mailing list