[evolution-data-server] [IMAPx] Add "use-multi-fetch" boolean option
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server] [IMAPx] Add "use-multi-fetch" boolean option
- Date: Mon, 15 Feb 2016 17:07:49 +0000 (UTC)
commit 6ace0dda33ba4a604ab2ca9537e8dde2742f0eb5
Author: Milan Crha <mcrha redhat com>
Date: Mon Feb 15 18:03:38 2016 +0100
[IMAPx] Add "use-multi-fetch" boolean option
The default is TRUE. Set it to FALSE, to disable message download
in chunks, which some servers dislike.
Related to a downstream bug report:
https://bugzilla.redhat.com/show_bug.cgi?id=1306846
camel/providers/imapx/camel-imapx-server.c | 5 ++-
camel/providers/imapx/camel-imapx-settings.c | 68 ++++++++++++--------------
camel/providers/imapx/camel-imapx-settings.h | 6 +-
docs/reference/camel/camel-sections.txt | 4 +-
4 files changed, 40 insertions(+), 43 deletions(-)
---
diff --git a/camel/providers/imapx/camel-imapx-server.c b/camel/providers/imapx/camel-imapx-server.c
index 2da489a..569d9ad 100644
--- a/camel/providers/imapx/camel-imapx-server.c
+++ b/camel/providers/imapx/camel-imapx-server.c
@@ -3961,6 +3961,7 @@ camel_imapx_server_get_message_sync (CamelIMAPXServer *is,
{
CamelMessageInfo *mi;
CamelStream *result_stream = NULL;
+ CamelIMAPXSettings *settings;
GIOStream *cache_stream;
gsize data_size;
gboolean use_multi_fetch;
@@ -3997,8 +3998,10 @@ camel_imapx_server_get_message_sync (CamelIMAPXServer *is,
return NULL;
}
+ settings = camel_imapx_server_ref_settings (is);
data_size = ((CamelMessageInfoBase *) mi)->size;
- use_multi_fetch = data_size > MULTI_SIZE;
+ use_multi_fetch = data_size > MULTI_SIZE && camel_imapx_settings_get_use_multi_fetch (settings);
+ g_object_unref (settings);
g_warn_if_fail (is->priv->get_message_stream == NULL);
diff --git a/camel/providers/imapx/camel-imapx-settings.c b/camel/providers/imapx/camel-imapx-settings.c
index 3540296..956e33a 100644
--- a/camel/providers/imapx/camel-imapx-settings.c
+++ b/camel/providers/imapx/camel-imapx-settings.c
@@ -31,9 +31,9 @@ struct _CamelIMAPXSettingsPrivate {
gchar *real_trash_path;
gchar *shell_command;
- guint batch_fetch_count;
guint concurrent_connections;
+ gboolean use_multi_fetch;
gboolean check_all;
gboolean check_subscribed;
gboolean filter_all;
@@ -55,7 +55,7 @@ struct _CamelIMAPXSettingsPrivate {
enum {
PROP_0,
PROP_AUTH_MECHANISM,
- PROP_BATCH_FETCH_COUNT,
+ PROP_USE_MULTI_FETCH,
PROP_CHECK_ALL,
PROP_CHECK_SUBSCRIBED,
PROP_CONCURRENT_CONNECTIONS,
@@ -102,10 +102,10 @@ imapx_settings_set_property (GObject *object,
g_value_get_string (value));
return;
- case PROP_BATCH_FETCH_COUNT:
- camel_imapx_settings_set_batch_fetch_count (
+ case PROP_USE_MULTI_FETCH:
+ camel_imapx_settings_set_use_multi_fetch (
CAMEL_IMAPX_SETTINGS (object),
- g_value_get_uint (value));
+ g_value_get_boolean (value));
return;
case PROP_CHECK_ALL:
@@ -270,10 +270,10 @@ imapx_settings_get_property (GObject *object,
CAMEL_NETWORK_SETTINGS (object)));
return;
- case PROP_BATCH_FETCH_COUNT:
- g_value_set_uint (
+ case PROP_USE_MULTI_FETCH:
+ g_value_set_boolean (
value,
- camel_imapx_settings_get_batch_fetch_count (
+ camel_imapx_settings_get_use_multi_fetch (
CAMEL_IMAPX_SETTINGS (object)));
return;
@@ -487,14 +487,12 @@ camel_imapx_settings_class_init (CamelIMAPXSettingsClass *class)
g_object_class_install_property (
object_class,
- PROP_BATCH_FETCH_COUNT,
- g_param_spec_uint (
- "batch-fetch-count",
- "Batch Fetch Count",
- "Number of envelopes to fetch at once",
- 0,
- G_MAXUINT,
- 500,
+ PROP_USE_MULTI_FETCH,
+ g_param_spec_boolean (
+ "use-multi-fetch",
+ "Use Multi Fetch",
+ "Whether allow downloading of large messages in chunks",
+ TRUE,
G_PARAM_READWRITE |
G_PARAM_CONSTRUCT |
G_PARAM_STATIC_STRINGS));
@@ -776,50 +774,46 @@ camel_imapx_settings_init (CamelIMAPXSettings *settings)
}
/**
- * camel_imapx_settings_get_batch_fetch_count:
+ * camel_imapx_settings_get_use_multi_fetch:
* @settings: a #CamelIMAPXSettings
*
- * Returns the number of message envelopes to fetch at once.
- *
- * This is a tunable performance parameter and probably should not be
- * exposed in a graphical user interface.
+ * Returns whether large messages can be downloaded in chunks.
+ * The default is %TRUE, but some server can be slower when
+ * the messages are downloaded in parts, rather than in one call.
*
- * Returns: number of message envelopes to fetch at once
+ * Returns: whether large messages can be downloaded in chunks
*
- * Since: 3.2
+ * Since: 3.20
**/
guint
-camel_imapx_settings_get_batch_fetch_count (CamelIMAPXSettings *settings)
+camel_imapx_settings_get_use_multi_fetch (CamelIMAPXSettings *settings)
{
g_return_val_if_fail (CAMEL_IS_IMAPX_SETTINGS (settings), 0);
- return settings->priv->batch_fetch_count;
+ return settings->priv->use_multi_fetch;
}
/**
- * camel_imapx_settings_set_batch_fetch_count:
+ * camel_imapx_settings_set_use_multi_fetch:
* @settings: a #CamelIMAPXSettings
- * @batch_fetch_count: number of message envelopes to fetch at once
+ * @use_multi_fetch: whether can download large messages in chunks
*
- * Sets the number of message envelopes to fetch at once.
+ * Sets whether can download large messages in chunks.
*
- * This is a tunable performance parameter and probably should not be
- * exposed in a graphical user interface.
- *
- * Since: 3.2
+ * Since: 3.20
**/
void
-camel_imapx_settings_set_batch_fetch_count (CamelIMAPXSettings *settings,
- guint batch_fetch_count)
+camel_imapx_settings_set_use_multi_fetch (CamelIMAPXSettings *settings,
+ guint use_multi_fetch)
{
g_return_if_fail (CAMEL_IS_IMAPX_SETTINGS (settings));
- if (settings->priv->batch_fetch_count == batch_fetch_count)
+ if (settings->priv->use_multi_fetch == use_multi_fetch)
return;
- settings->priv->batch_fetch_count = batch_fetch_count;
+ settings->priv->use_multi_fetch = use_multi_fetch;
- g_object_notify (G_OBJECT (settings), "batch-fetch-count");
+ g_object_notify (G_OBJECT (settings), "use-multi-fetch");
}
/**
diff --git a/camel/providers/imapx/camel-imapx-settings.h b/camel/providers/imapx/camel-imapx-settings.h
index c2626c9..f1e402e 100644
--- a/camel/providers/imapx/camel-imapx-settings.h
+++ b/camel/providers/imapx/camel-imapx-settings.h
@@ -55,11 +55,11 @@ struct _CamelIMAPXSettingsClass {
};
GType camel_imapx_settings_get_type (void) G_GNUC_CONST;
-guint camel_imapx_settings_get_batch_fetch_count
+guint camel_imapx_settings_get_use_multi_fetch
(CamelIMAPXSettings *settings);
-void camel_imapx_settings_set_batch_fetch_count
+void camel_imapx_settings_set_use_multi_fetch
(CamelIMAPXSettings *settings,
- guint batch_fetch_count);
+ guint use_multi_fetch);
gboolean camel_imapx_settings_get_check_all
(CamelIMAPXSettings *settings);
void camel_imapx_settings_set_check_all
diff --git a/docs/reference/camel/camel-sections.txt b/docs/reference/camel/camel-sections.txt
index bd04033..b870454 100644
--- a/docs/reference/camel/camel-sections.txt
+++ b/docs/reference/camel/camel-sections.txt
@@ -3737,8 +3737,8 @@ imapx_connect_to_server
<FILE>camel-imapx-settings</FILE>
<TITLE>CamelIMAPXSettings</TITLE>
CamelIMAPXSettings
-camel_imapx_settings_get_batch_fetch_count
-camel_imapx_settings_set_batch_fetch_count
+camel_imapx_settings_get_use_multi_fetch
+camel_imapx_settings_set_use_multi_fetch
camel_imapx_settings_get_check_all
camel_imapx_settings_set_check_all
camel_imapx_settings_get_check_subscribed
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]