[evolution-data-server] Add e_collection_backend_get_cache_dir().
- From: Matthew Barnes <mbarnes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server] Add e_collection_backend_get_cache_dir().
- Date: Tue, 12 Jun 2012 11:51:24 +0000 (UTC)
commit c25935607ee765bd8d391dd3fd92e98bad435924
Author: Matthew Barnes <mbarnes redhat com>
Date: Mon Jun 11 14:22:02 2012 -0400
Add e_collection_backend_get_cache_dir().
Returns the UID-based cache directory for an ECollectionBackend.
This will tie into EServerSideSource's "write-directory" property.
.../reference/libebackend/libebackend-sections.txt | 1 +
libebackend/e-collection-backend.c | 37 +++++++++++++++++++-
libebackend/e-collection-backend.h | 2 +
3 files changed, 39 insertions(+), 1 deletions(-)
---
diff --git a/docs/reference/libebackend/libebackend-sections.txt b/docs/reference/libebackend/libebackend-sections.txt
index 271e31d..4619a18 100644
--- a/docs/reference/libebackend/libebackend-sections.txt
+++ b/docs/reference/libebackend/libebackend-sections.txt
@@ -114,6 +114,7 @@ e_backend_factory_get_type
ECollectionBackend
e_collection_backend_new_child
e_collection_backend_ref_server
+e_collection_backend_get_cache_dir
e_collection_backend_list_calendar_sources
e_collection_backend_list_contacts_sources
e_collection_backend_list_mail_sources
diff --git a/libebackend/e-collection-backend.c b/libebackend/e-collection-backend.c
index 4aacd3b..caa9445 100644
--- a/libebackend/e-collection-backend.c
+++ b/libebackend/e-collection-backend.c
@@ -54,6 +54,8 @@ struct _ECollectionBackendPrivate {
GWeakRef server;
GQueue children;
+ gchar *cache_dir;
+
/* Remembers memory-only data source UIDs
* based on a server-assigned resource ID. */
gchar *collection_filename;
@@ -463,6 +465,8 @@ collection_backend_constructed (GObject *object)
ESourceRegistryServer *server;
ESource *source;
GNode *node;
+ const gchar *collection_uid;
+ const gchar *user_cache_dir;
gulong handler_id;
backend = E_COLLECTION_BACKEND (object);
@@ -471,11 +475,20 @@ collection_backend_constructed (GObject *object)
G_OBJECT_CLASS (e_collection_backend_parent_class)->
constructed (object);
+ source = e_backend_get_source (E_BACKEND (backend));
+
collection_backend_load_collection_file (backend);
+ /* Determine the backend's cache directory. */
+
+ user_cache_dir = e_get_user_cache_dir ();
+ collection_uid = e_source_get_uid (source);
+ backend->priv->cache_dir = g_build_filename (
+ user_cache_dir, "sources", collection_uid, NULL);
+ g_mkdir_with_parents (backend->priv->cache_dir, 0700);
+
/* Emit "child-added" signals for the children we already have. */
- source = e_backend_get_source (E_BACKEND (backend));
node = e_server_side_source_get_node (E_SERVER_SIDE_SOURCE (source));
node = g_node_first_child (node);
@@ -704,6 +717,28 @@ e_collection_backend_ref_server (ECollectionBackend *backend)
}
/**
+ * e_collection_backend_get_cache_dir:
+ * @backend: an #ECollectionBackend
+ *
+ * Returns the private cache directory path for @backend, which is named
+ * after the #ESource:uid of @backend's collection #EBackend:source.
+ *
+ * The cache directory is meant to store key files for backend-created
+ * data sources. See also: e_server_side_source_set_write_directory()
+ *
+ * Returns: the cache directory for @backend
+ *
+ * Since: 3.6
+ **/
+const gchar *
+e_collection_backend_get_cache_dir (ECollectionBackend *backend)
+{
+ g_return_val_if_fail (E_IS_COLLECTION_BACKEND (backend), NULL);
+
+ return backend->priv->cache_dir;
+}
+
+/**
* e_collection_backend_list_calendar_sources:
* @backend: an #ECollectionBackend
*
diff --git a/libebackend/e-collection-backend.h b/libebackend/e-collection-backend.h
index 169864d..6670480 100644
--- a/libebackend/e-collection-backend.h
+++ b/libebackend/e-collection-backend.h
@@ -85,6 +85,8 @@ ESource * e_collection_backend_new_child (ECollectionBackend *backend,
const gchar *resource_id);
struct _ESourceRegistryServer *
e_collection_backend_ref_server (ECollectionBackend *backend);
+const gchar * e_collection_backend_get_cache_dir
+ (ECollectionBackend *backend);
GList * e_collection_backend_list_calendar_sources
(ECollectionBackend *backend);
GList * e_collection_backend_list_contacts_sources
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]