summaryrefslogtreecommitdiffstats
path: root/bcache.h
diff options
context:
space:
mode:
authorBrendan Cully <brendan@kublai.com>2006-07-04 17:14:59 +0000
committerBrendan Cully <brendan@kublai.com>2006-07-04 17:14:59 +0000
commitbddc24cd086bb3d0126ee4edc9d6de04d96fccfc (patch)
treee18703210dd912ecab7cf8420ab8172c7313b4ff /bcache.h
parenta34b7f77644276384c29f3224e4c120e4faaac99 (diff)
bcache.c and bcache.h accidentally omitted from previous commit.
Diffstat (limited to 'bcache.h')
-rw-r--r--bcache.h74
1 files changed, 74 insertions, 0 deletions
diff --git a/bcache.h b/bcache.h
new file mode 100644
index 00000000..f7728a54
--- /dev/null
+++ b/bcache.h
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2006 Brendan Cully <brendan@kublai.com>
+ * Copyright (C) 2006 Rocco Rutte <pdmef@gmx.net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+#ifndef _BCACHE_H_
+#define _BCACHE_H_ 1
+
+/*
+ * support for body cache
+ */
+
+struct body_cache;
+typedef struct body_cache body_cache_t;
+
+/*
+ * Parameters:
+ * - 'account' is the current mailbox' account (required)
+ * - 'mailbox' is the path to the mailbox of the account (optional):
+ * the driver using it is responsible for ensuring that hierarchies
+ * are separated by '/' (if it knows of such a concepts like
+ * mailboxes or hierarchies)
+ * Returns NULL on failure.
+ */
+body_cache_t *mutt_bcache_open (ACCOUNT *account, const char *mailbox);
+
+/* free all memory of bcache and finally FREE() it, too */
+void mutt_bcache_close (body_cache_t **bcache);
+
+/*
+ * Parameters:
+ * - 'bcache' is the pointer returned by mutt_bcache_open() (required)
+ * - 'id' is a per-mailbox unique identifier for the message (required)
+ * These return NULL/-1 on failure and FILE pointer/0 on success.
+ */
+
+FILE* mutt_bcache_get(body_cache_t *bcache, const char *id);
+FILE* mutt_bcache_put(body_cache_t *bcache, const char *id);
+int mutt_bcache_del(body_cache_t *bcache, const char *id);
+int mutt_bcache_exists(body_cache_t *bcache, const char *id);
+
+/*
+ * This more or less "examines" the cache and calls a function with
+ * each id it finds if given.
+ *
+ * The optional callback function gets the id of a message, the very same
+ * body cache handle mutt_bcache_list() is called with (to, perhaps,
+ * perform further operations on the bcache), and a data cookie which is
+ * just passed as-is. If the return value of the callback is non-zero, the
+ * listing is aborted and continued otherwise. The callback is optional
+ * so that this function can be used to count the items in the cache
+ * (see below for return value).
+ *
+ * This returns -1 on failure and the count (>=0) of items processed
+ * otherwise.
+ */
+int mutt_bcache_list(body_cache_t *bcache,
+ int (*want_id)(const char *id, body_cache_t *bcache,
+ void *data), void *data);
+
+#endif /* _BCACHE_H_ */