[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