From ba4f63e1dede973582a3fa6add4cc390925ffea3 Mon Sep 17 00:00:00 2001 From: Jose Dapena Paz Date: Sat, 22 Aug 2009 17:11:42 +0200 Subject: [PATCH] Add also async implementation for decoding parts in account protocols. --- src/modest-account-protocol.c | 36 ++++++++++++++++++++++++++++++++++++ src/modest-account-protocol.h | 26 +++++++++++++++++++++++++- 2 files changed, 61 insertions(+), 1 deletion(-) diff --git a/src/modest-account-protocol.c b/src/modest-account-protocol.c index 4c028a1..ef7d1b7 100644 --- a/src/modest-account-protocol.c +++ b/src/modest-account-protocol.c @@ -95,6 +95,12 @@ static gboolean modest_account_protocol_decode_part_to_stream_default (ModestAcc TnyMimePart *part, TnyStream *stream, GError *error); +static gboolean modest_account_protocol_decode_part_to_stream_async_default (ModestAccountProtocol *protocol, + TnyMimePart *self, + TnyStream *stream, + TnyMimePartCallback callback, + TnyStatusCallback status_callback, + gpointer user_data); static gboolean modest_account_protocol_is_supported_default (ModestAccountProtocol *self); static gchar *modest_account_protocol_get_from_default (ModestAccountProtocol *self, const gchar *account_id, @@ -217,6 +223,8 @@ modest_account_protocol_class_init (ModestAccountProtocolClass *klass) modest_account_protocol_wizard_finished_default; account_class->decode_part_to_stream = modest_account_protocol_decode_part_to_stream_default; + account_class->decode_part_to_stream_async = + modest_account_protocol_decode_part_to_stream_async_default; account_class->get_from = modest_account_protocol_get_from_default; account_class->get_from_list = @@ -715,6 +723,34 @@ modest_account_protocol_decode_part_to_stream (ModestAccountProtocol *self, error); } +static gboolean +modest_account_protocol_decode_part_to_stream_async_default (ModestAccountProtocol *self, + TnyMimePart *part, + TnyStream *stream, + TnyMimePartCallback callback, + TnyStatusCallback status_callback, + gpointer user_data) +{ + /* By default account protocols do not handle themselves the transfer */ + return FALSE; +} + +gboolean +modest_account_protocol_decode_part_to_stream_async (ModestAccountProtocol *self, + TnyMimePart *part, + TnyStream *stream, + TnyMimePartCallback callback, + TnyStatusCallback status_callback, + gpointer user_data) +{ + return MODEST_ACCOUNT_PROTOCOL_GET_CLASS (self)->decode_part_to_stream_async (self, + part, + stream, + callback, + status_callback, + user_data); +} + gchar * modest_account_protocol_get_from (ModestAccountProtocol *self, const gchar *account_id, diff --git a/src/modest-account-protocol.h b/src/modest-account-protocol.h index b7989d3..f59f538 100644 --- a/src/modest-account-protocol.h +++ b/src/modest-account-protocol.h @@ -104,9 +104,14 @@ struct _ModestAccountProtocolClass { TnyMimePart *part, TnyStream *stream, GError *error); + gboolean (*decode_part_to_stream_async) (ModestAccountProtocol *protocol, + TnyMimePart *part, + TnyStream *stream, + TnyMimePartCallback callback, + TnyStatusCallback status_callback, + gpointer user_data); /* Padding for future expansions */ - void (*_reserved7) (void); void (*_reserved8) (void); void (*_reserved9) (void); void (*_reserved10) (void); @@ -506,6 +511,25 @@ modest_account_protocol_decode_part_to_stream (ModestAccountProtocol *protocol, TnyStream *stream, GError *error); +/** + * modest_account_protocol_decode_part_to_stream_async: + * @self: a #ModestAccountProtocol + * @part: a #TnyMimePart + * @stream: a #TnyStream + * @error: a #GError + * + * This virtual method delegates on the account protocol to decode @part + * into @stream, but asynchronously. + * + * Returns: %TRUE if @protocol does the decode operation (then we shouldn't expect + * callback to happen from this call, %FALSE if modest should do it. + */ +gboolean modest_account_protocol_decode_part_to_stream_async (ModestAccountProtocol *self, + TnyMimePart *part, + TnyStream *stream, + TnyMimePartCallback callback, + TnyStatusCallback status_callback, + gpointer user_data); G_END_DECLS -- 1.7.9.5