From f3f2afef4c3c60fa1ba472ef93e8e8516e7027bb Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Thu, 6 Apr 2000 20:10:05 +0000 Subject: Reorganize the folder-fetching methods and implement a folder cache so 2000-04-06 Dan Winship * camel-store.[ch]: Reorganize the folder-fetching methods and implement a folder cache so that multiple requests for the same folder will yield the same CamelFolder object (as long as it remains active). Includes some code to remove no-longer-active folders from the cache, but it doesn't get used since nothing is ever unref'ed in Camel right now... * providers/mbox/camel-mbox-store.c: * providers/pop3/camel-pop3-store.c: update for CamelStore changes. * camel-folder.[ch]: Remove the (unused) CamelException argument from camel_folder_get_name and camel_folder_get_full_name. (camel_folder_set_name): make this go away since changing a folder's name after it has been created could result in it conflicting with a separately-issued folder. svn path=/trunk/; revision=2314 --- camel/camel-store.h | 39 +++++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 10 deletions(-) (limited to 'camel/camel-store.h') diff --git a/camel/camel-store.h b/camel/camel-store.h index af5aa959a6..d66e6344b5 100644 --- a/camel/camel-store.h +++ b/camel/camel-store.h @@ -46,32 +46,51 @@ extern "C" { struct _CamelStore { - CamelService parent_object; - + CamelService parent_object; + + GHashTable *folders; + }; typedef struct { CamelServiceClass parent_class; - - CamelFolder * (*get_folder) (CamelStore *store, - const gchar *folder_name, + + CamelFolder * (*get_folder) (CamelStore *store, + const char *folder_name, + CamelException *ex); + + char * (*get_folder_name) (CamelStore *store, + const char *folder_name, CamelException *ex); - CamelFolder * (*get_root_folder) (CamelStore *store, + char * (*get_root_folder_name) (CamelStore *store, CamelException *ex); - CamelFolder * (*get_default_folder) (CamelStore *store, + char * (*get_default_folder_name) (CamelStore *store, CamelException *ex); -} CamelStoreClass; + CamelFolder * (*lookup_folder) (CamelStore *store, + const char *folder_name); + void (*cache_folder) (CamelStore *store, + const char *folder_name, + CamelFolder *folder); + void (*uncache_folder) (CamelStore *store, + CamelFolder *folder); +} CamelStoreClass; -/* public methods */ /* Standard Gtk function */ GtkType camel_store_get_type (void); -CamelFolder * camel_store_get_folder (CamelStore *store, const gchar *folder_name, CamelException *ex); +/* public methods */ +CamelFolder * camel_store_get_folder (CamelStore *store, + const char *folder_name, + CamelException *ex); +CamelFolder * camel_store_get_root_folder (CamelStore *store, + CamelException *ex); +CamelFolder * camel_store_get_default_folder (CamelStore *store, + CamelException *ex); #ifdef __cplusplus } -- cgit v1.2.3