[evolution-data-server] CamelSpoolStore: Use cache for often accessed data
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server] CamelSpoolStore: Use cache for often accessed data
- Date: Tue, 2 Mar 2021 20:36:10 +0000 (UTC)
commit 0a372113dd0033ac605e535440f33d9203852a61
Author: Milan Crha <mcrha redhat com>
Date: Tue Mar 2 21:30:56 2021 +0100
CamelSpoolStore: Use cache for often accessed data
* cache the store type, to not check the disk repeatedly;
* use camel_store_get_folder_sync() in spool_store_get_inbox_folder_sync(),
thus an already created Inbox folder is returned, instead
of a new instance, when it exists.
src/camel/providers/local/camel-spool-store.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
---
diff --git a/src/camel/providers/local/camel-spool-store.c b/src/camel/providers/local/camel-spool-store.c
index 151da9adf..e6bb8eed1 100644
--- a/src/camel/providers/local/camel-spool-store.c
+++ b/src/camel/providers/local/camel-spool-store.c
@@ -44,7 +44,7 @@ typedef enum _camel_spool_store_t {
} camel_spool_store_t;
struct _CamelSpoolStorePrivate {
- gint placeholder; /* for future expansion */
+ camel_spool_store_t store_type;
};
G_DEFINE_TYPE_WITH_PRIVATE (
@@ -63,6 +63,9 @@ spool_store_get_type (CamelSpoolStore *spool_store,
struct stat st;
gchar *path;
+ if (spool_store->priv->store_type != CAMEL_SPOOL_STORE_INVALID)
+ return spool_store->priv->store_type;
+
service = CAMEL_SERVICE (spool_store);
settings = camel_service_ref_settings (service);
@@ -107,6 +110,8 @@ spool_store_get_type (CamelSpoolStore *spool_store,
g_free (path);
+ spool_store->priv->store_type = type;
+
return type;
}
@@ -566,7 +571,7 @@ spool_store_get_inbox_folder_sync (CamelStore *store,
switch (spool_store_get_type (spool_store, error)) {
case CAMEL_SPOOL_STORE_MBOX:
- folder = spool_store_get_folder_sync (
+ folder = camel_store_get_folder_sync (
store, "INBOX", CAMEL_STORE_FOLDER_CREATE,
cancellable, error);
break;
@@ -701,4 +706,5 @@ static void
camel_spool_store_init (CamelSpoolStore *spool_store)
{
spool_store->priv = camel_spool_store_get_instance_private (spool_store);
+ spool_store->priv->store_type = CAMEL_SPOOL_STORE_INVALID;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]