aboutsummaryrefslogtreecommitdiffstats
path: root/camel/camel-folder.h
diff options
context:
space:
mode:
authorNot Zed <NotZed@HelixCode.com>2000-12-24 08:46:20 +0800
committerMichael Zucci <zucchi@src.gnome.org>2000-12-24 08:46:20 +0800
commit6de256c2a2b23f30d35e4a2213ad5839bf141d06 (patch)
treea34d8be64c0718070c4e1ea9548282912f37b387 /camel/camel-folder.h
parent6183d89039ba67a7f3869f460c13aff09a548471 (diff)
downloadgsoc2013-evolution-6de256c2a2b23f30d35e4a2213ad5839bf141d06.tar
gsoc2013-evolution-6de256c2a2b23f30d35e4a2213ad5839bf141d06.tar.gz
gsoc2013-evolution-6de256c2a2b23f30d35e4a2213ad5839bf141d06.tar.bz2
gsoc2013-evolution-6de256c2a2b23f30d35e4a2213ad5839bf141d06.tar.lz
gsoc2013-evolution-6de256c2a2b23f30d35e4a2213ad5839bf141d06.tar.xz
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.h33
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);