diff options
author | Not Zed <NotZed@HelixCode.com> | 2000-12-24 08:46:20 +0800 |
---|---|---|
committer | Michael Zucci <zucchi@src.gnome.org> | 2000-12-24 08:46:20 +0800 |
commit | 6de256c2a2b23f30d35e4a2213ad5839bf141d06 (patch) | |
tree | a34d8be64c0718070c4e1ea9548282912f37b387 /camel/camel-folder.h | |
parent | 6183d89039ba67a7f3869f460c13aff09a548471 (diff) | |
download | gsoc2013-evolution-6de256c2a2b23f30d35e4a2213ad5839bf141d06.tar.gz gsoc2013-evolution-6de256c2a2b23f30d35e4a2213ad5839bf141d06.tar.zst gsoc2013-evolution-6de256c2a2b23f30d35e4a2213ad5839bf141d06.zip |
Lock the command channel while searching. (imap_body_contains): If
2000-12-24 Not Zed <NotZed@HelixCode.com>
* providers/imap/camel-imap-search.c (imap_body_contains): Lock
the command channel while searching.
(imap_body_contains): If performing a whole uid search, then add
references to our own summary items, dont look it up in the
folder. This way they can't vanish unexpectedly.
* providers/imap/camel-imap-folder.h (CamelImapFolder): Added a
private field.
* providers/imap/camel-imap-private.h: Added lock for imap
searches.
* Merge from camel-mt-branch.
* providers/imap/camel-imap-folder.c (imap_update_summary): Merge
fix, use the folder->summary.
(imap_get_message_flags, imap_set_message_flags,
imap_get_message_user_flag, imap_set_message_user_flag): Removed
again.
(camel_imap_folder_init): Setup private data/lock.
(imap_finalize): Free private data/search lock.
(imap_search_free): Lock the search_lock.
(imap_search_by_expression): Lock the search lock when using the
search object. Also copy/ref hte summary, rather than getting it
directly.
(imap_refresh_info): Free any info lookups. Use folder->summary
not imap_folder->summary. And lock around commands.
svn path=/trunk/; revision=7150
Diffstat (limited to 'camel/camel-folder.h')
-rw-r--r-- | camel/camel-folder.h | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/camel/camel-folder.h b/camel/camel-folder.h index 4060d36731..615ecb53a0 100644 --- a/camel/camel-folder.h +++ b/camel/camel-folder.h @@ -1,9 +1,9 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* camel-folder.h: Abstract class for an email folder */ - -/* - * Author: - * Bertrand Guiheneuf <bertrand@helixcode.com> +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- + * + * camel-folder.h: Abstract class for an email folder + * + * Authors: Bertrand Guiheneuf <bertrand@helixcode.com> + * Michael Zucchi <notzed@helixcode.com> * * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com) * @@ -23,7 +23,6 @@ * USA */ - #ifndef CAMEL_FOLDER_H #define CAMEL_FOLDER_H 1 @@ -50,22 +49,24 @@ struct _CamelFolderChangeInfo { GHashTable *uid_source; /* used to create unique lists */ struct _EMemPool *uid_pool; /* pool used to store copies of uid strings */ + struct _CamelFolderChangeInfoPrivate *priv; }; struct _CamelFolder { CamelObject parent_object; - int frozen; - CamelFolderChangeInfo *changed_frozen; /* queues changed events */ + struct _CamelFolderPrivate *priv; char *name; char *full_name; CamelStore *parent_store; + CamelFolderSummary *summary; guint32 permanent_flags; gboolean has_summary_capability:1; gboolean has_search_capability:1; + }; typedef struct { @@ -137,7 +138,8 @@ typedef struct { void (*search_free) (CamelFolder *folder, GPtrArray *result); - const CamelMessageInfo * (*get_message_info) (CamelFolder *, const char *uid); + CamelMessageInfo * (*get_message_info) (CamelFolder *, const char *uid); + void (*free_message_info) (CamelFolder *, CamelMessageInfo *); void (*copy_message_to) (CamelFolder *source, const char *uid, @@ -250,9 +252,10 @@ GPtrArray * camel_folder_search_by_expression (CamelFolder *folder, void camel_folder_search_free (CamelFolder *folder, GPtrArray *); /* summary info */ -const CamelMessageInfo *camel_folder_get_message_info (CamelFolder *summary, - const char *uid); +CamelMessageInfo *camel_folder_get_message_info (CamelFolder *folder, const char *uid); +void camel_folder_free_message_info (CamelFolder *folder, CamelMessageInfo *info); +/* FIXME: copy-message-to is not required */ void camel_folder_copy_message_to (CamelFolder *source, const char *uid, CamelFolder *dest, @@ -263,9 +266,15 @@ void camel_folder_move_message_to (CamelFolder *source, CamelFolder *dest, CamelException *ex); +/* stop/restart getting events */ void camel_folder_freeze (CamelFolder *folder); void camel_folder_thaw (CamelFolder *folder); +#if 0 +/* lock/unlock at the thread level, NOTE: only used internally */ +void camel_folder_lock (CamelFolder *folder); +void camel_folder_unlock (CamelFolder *folder); +#endif /* For use by subclasses (for free_{uids,summary,subfolder_names}) */ void camel_folder_free_nop (CamelFolder *folder, GPtrArray *array); |