Mercurial > dovecot > core-2.2
changeset 12540:3c883e0dcb31
Moved fts/virtual plugin communication functions away from lib-storage.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Mon, 06 Dec 2010 03:28:29 +0000 |
parents | d0a24521d13f |
children | 5815ff80f198 |
files | src/lib-storage/index/cydir/cydir-storage.c src/lib-storage/index/dbox-multi/mdbox-storage.c src/lib-storage/index/dbox-single/sdbox-storage.c src/lib-storage/index/maildir/maildir-storage.c src/lib-storage/index/mbox/mbox-storage.c src/lib-storage/index/raw/raw-storage.c src/lib-storage/mail-storage-private.h src/lib-storage/mail-storage.c src/lib-storage/mail-storage.h src/lib-storage/test-mailbox.c src/plugins/fts-solr/fts-backend-solr.c src/plugins/fts/Makefile.am src/plugins/fts/fts-storage.c src/plugins/virtual/virtual-storage.c src/plugins/virtual/virtual-storage.h |
diffstat | 15 files changed, 33 insertions(+), 91 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/index/cydir/cydir-storage.c Mon Dec 06 03:11:08 2010 +0000 +++ b/src/lib-storage/index/cydir/cydir-storage.c Mon Dec 06 03:28:29 2010 +0000 @@ -160,9 +160,6 @@ index_storage_get_uid_range, index_storage_get_expunges, NULL, - NULL, - NULL, - NULL, index_mail_alloc, index_header_lookup_init, index_header_lookup_deinit,
--- a/src/lib-storage/index/dbox-multi/mdbox-storage.c Mon Dec 06 03:11:08 2010 +0000 +++ b/src/lib-storage/index/dbox-multi/mdbox-storage.c Mon Dec 06 03:28:29 2010 +0000 @@ -419,9 +419,6 @@ index_storage_get_uid_range, index_storage_get_expunges, NULL, - NULL, - NULL, - NULL, dbox_mail_alloc, index_header_lookup_init, index_header_lookup_deinit,
--- a/src/lib-storage/index/dbox-single/sdbox-storage.c Mon Dec 06 03:11:08 2010 +0000 +++ b/src/lib-storage/index/dbox-single/sdbox-storage.c Mon Dec 06 03:28:29 2010 +0000 @@ -386,9 +386,6 @@ index_storage_get_uid_range, index_storage_get_expunges, NULL, - NULL, - NULL, - NULL, dbox_mail_alloc, index_header_lookup_init, index_header_lookup_deinit,
--- a/src/lib-storage/index/maildir/maildir-storage.c Mon Dec 06 03:11:08 2010 +0000 +++ b/src/lib-storage/index/maildir/maildir-storage.c Mon Dec 06 03:28:29 2010 +0000 @@ -659,9 +659,6 @@ index_storage_get_seq_range, index_storage_get_uid_range, index_storage_get_expunges, - NULL, - NULL, - NULL, maildir_get_private_flags_mask, index_mail_alloc, index_header_lookup_init,
--- a/src/lib-storage/index/mbox/mbox-storage.c Mon Dec 06 03:11:08 2010 +0000 +++ b/src/lib-storage/index/mbox/mbox-storage.c Mon Dec 06 03:28:29 2010 +0000 @@ -764,9 +764,6 @@ index_storage_get_uid_range, index_storage_get_expunges, NULL, - NULL, - NULL, - NULL, index_mail_alloc, index_header_lookup_init, index_header_lookup_deinit,
--- a/src/lib-storage/index/raw/raw-storage.c Mon Dec 06 03:11:08 2010 +0000 +++ b/src/lib-storage/index/raw/raw-storage.c Mon Dec 06 03:28:29 2010 +0000 @@ -160,9 +160,6 @@ index_storage_get_uid_range, index_storage_get_expunges, NULL, - NULL, - NULL, - NULL, index_mail_alloc, index_header_lookup_init, index_header_lookup_deinit,
--- a/src/lib-storage/mail-storage-private.h Mon Dec 06 03:11:08 2010 +0000 +++ b/src/lib-storage/mail-storage-private.h Mon Dec 06 03:28:29 2010 +0000 @@ -162,16 +162,6 @@ bool (*get_expunges)(struct mailbox *box, uint64_t prev_modseq, const ARRAY_TYPE(seq_range) *uids_filter, ARRAY_TYPE(mailbox_expunge_rec) *expunges); - bool (*get_virtual_uid)(struct mailbox *box, - const char *backend_mailbox, - uint32_t backend_uidvalidity, - uint32_t backend_uid, uint32_t *uid_r); - void (*get_virtual_backend_boxes)(struct mailbox *box, - ARRAY_TYPE(mailboxes) *mailboxes, - bool only_with_msgs); - void (*get_virtual_box_patterns)(struct mailbox *box, - ARRAY_TYPE(mailbox_virtual_patterns) *includes, - ARRAY_TYPE(mailbox_virtual_patterns) *excludes); enum mail_flags (*get_private_flags_mask)(struct mailbox *box); struct mail *
--- a/src/lib-storage/mail-storage.c Mon Dec 06 03:11:08 2010 +0000 +++ b/src/lib-storage/mail-storage.c Mon Dec 06 03:28:29 2010 +0000 @@ -1034,42 +1034,6 @@ uids_filter, expunges); } -bool mailbox_get_virtual_uid(struct mailbox *box, const char *backend_mailbox, - uint32_t backend_uidvalidity, - uint32_t backend_uid, uint32_t *uid_r) -{ - if (box->v.get_virtual_uid == NULL) - return FALSE; - return box->v.get_virtual_uid(box, backend_mailbox, backend_uidvalidity, - backend_uid, uid_r); -} - -void mailbox_get_virtual_backend_boxes(struct mailbox *box, - ARRAY_TYPE(mailboxes) *mailboxes, - bool only_with_msgs) -{ - if (box->v.get_virtual_backend_boxes == NULL) - array_append(mailboxes, &box, 1); - else - box->v.get_virtual_backend_boxes(box, mailboxes, only_with_msgs); -} - -void mailbox_get_virtual_box_patterns(struct mailbox *box, - ARRAY_TYPE(mailbox_virtual_patterns) *includes, - ARRAY_TYPE(mailbox_virtual_patterns) *excludes) -{ - if (box->v.get_virtual_box_patterns == NULL) { - struct mailbox_virtual_pattern pat; - - memset(&pat, 0, sizeof(pat)); - pat.ns = box->list->ns; - pat.pattern = box->name; - array_append(includes, &pat, 1); - } else { - box->v.get_virtual_box_patterns(box, includes, excludes); - } -} - struct mailbox_header_lookup_ctx * mailbox_header_lookup_init(struct mailbox *box, const char *const headers[]) {
--- a/src/lib-storage/mail-storage.h Mon Dec 06 03:11:08 2010 +0000 +++ b/src/lib-storage/mail-storage.h Mon Dec 06 03:28:29 2010 +0000 @@ -464,22 +464,6 @@ bool mailbox_get_expunges(struct mailbox *box, uint64_t prev_modseq, const ARRAY_TYPE(seq_range) *uids_filter, ARRAY_TYPE(mailbox_expunge_rec) *expunges); -/* If box is a virtual mailbox, look up UID for the given backend message. - Returns TRUE if found, FALSE if not. */ -bool mailbox_get_virtual_uid(struct mailbox *box, const char *backend_mailbox, - uint32_t backend_uidvalidity, - uint32_t backend_uid, uint32_t *uid_r); -/* If box is a virtual mailbox, return all backend mailboxes. If - only_with_msgs=TRUE, return only those mailboxes that have at least one - message existing in the virtual mailbox. */ -void mailbox_get_virtual_backend_boxes(struct mailbox *box, - ARRAY_TYPE(mailboxes) *mailboxes, - bool only_with_msgs); -/* If mailbox is a virtual mailbox, return all mailbox list patterns that - are used to figure out which mailboxes belong to the virtual mailbox. */ -void mailbox_get_virtual_box_patterns(struct mailbox *box, - ARRAY_TYPE(mailbox_virtual_patterns) *includes, - ARRAY_TYPE(mailbox_virtual_patterns) *excludes); /* Initialize new search request. charset specifies the character set used in the search argument strings. If sort_program is non-NULL, the messages are
--- a/src/lib-storage/test-mailbox.c Mon Dec 06 03:11:08 2010 +0000 +++ b/src/lib-storage/test-mailbox.c Mon Dec 06 03:28:29 2010 +0000 @@ -303,9 +303,6 @@ test_mailbox_get_uid_range, test_mailbox_get_expunged_uids, NULL, - NULL, - NULL, - NULL, test_mailbox_mail_alloc, test_mailbox_header_lookup_init, test_mailbox_header_lookup_deinit,
--- a/src/plugins/fts-solr/fts-backend-solr.c Mon Dec 06 03:11:08 2010 +0000 +++ b/src/plugins/fts-solr/fts-backend-solr.c Mon Dec 06 03:28:29 2010 +0000 @@ -7,6 +7,7 @@ #include "unichar.h" #include "mail-storage-private.h" #include "mail-namespace.h" +#include "fts-mailbox.h" #include "solr-connection.h" #include "fts-solr-plugin.h" @@ -452,7 +453,7 @@ t_array_init(&includes_arr, 16); t_array_init(&excludes_arr, 16); - mailbox_get_virtual_box_patterns(box, &includes_arr, &excludes_arr); + fts_mailbox_get_virtual_box_patterns(box, &includes_arr, &excludes_arr); includes = array_get(&includes_arr, &inc_count); excludes = array_get(&excludes_arr, &exc_count); i_assert(inc_count > 0); @@ -783,8 +784,8 @@ for (; ns != NULL; ns = ns->alias_chain_next) { vname = convert_inbox ? ns->prefix : mail_namespace_get_vname(ns, ctx->vname, mailbox); - if (mailbox_get_virtual_uid(ctx->box, vname, uidvalidity, - *uid, uid)) + if (fts_mailbox_get_virtual_uid(ctx->box, vname, uidvalidity, + *uid, uid)) return TRUE; } return FALSE;
--- a/src/plugins/fts/Makefile.am Mon Dec 06 03:11:08 2010 +0000 +++ b/src/plugins/fts/Makefile.am Mon Dec 06 03:28:29 2010 +0000 @@ -3,7 +3,8 @@ -I$(top_srcdir)/src/lib-charset \ -I$(top_srcdir)/src/lib-mail \ -I$(top_srcdir)/src/lib-index \ - -I$(top_srcdir)/src/lib-storage + -I$(top_srcdir)/src/lib-storage \ + -I$(top_srcdir)/src/lib-storage/index lib20_fts_plugin_la_LDFLAGS = -module -avoid-version @@ -12,6 +13,7 @@ lib20_fts_plugin_la_SOURCES = \ fts-api.c \ + fts-mailbox.c \ fts-plugin.c \ fts-search.c \ fts-storage.c @@ -19,5 +21,6 @@ noinst_HEADERS = \ fts-api.h \ fts-api-private.h \ + fts-mailbox.h \ fts-plugin.h \ fts-storage.h
--- a/src/plugins/fts/fts-storage.c Mon Dec 06 03:11:08 2010 +0000 +++ b/src/plugins/fts/fts-storage.c Mon Dec 06 03:28:29 2010 +0000 @@ -13,6 +13,7 @@ #include "mail-search-build.h" #include "mail-storage-private.h" #include "fts-api-private.h" +#include "fts-mailbox.h" #include "fts-storage.h" #include "fts-plugin.h" @@ -453,7 +454,7 @@ int ret; t_array_init(&mailboxes, 64); - mailbox_get_virtual_backend_boxes(fctx->t->box, &mailboxes, TRUE); + fts_mailbox_get_virtual_backend_boxes(fctx->t->box, &mailboxes, TRUE); boxes = array_get_modifiable(&mailboxes, &box_count); vctx->pool = pool_alloconly_create("fts virtual build", 1024);
--- a/src/plugins/virtual/virtual-storage.c Mon Dec 06 03:11:08 2010 +0000 +++ b/src/plugins/virtual/virtual-storage.c Mon Dec 06 03:28:29 2010 +0000 @@ -29,6 +29,7 @@ extern struct mail_storage virtual_storage; extern struct mailbox virtual_mailbox; +extern struct virtual_mailbox_vfuncs virtual_mailbox_vfuncs; struct virtual_storage_module virtual_storage_module = MODULE_CONTEXT_INIT(&mail_storage_module_register); @@ -234,6 +235,7 @@ mbox->box.storage = _storage; mbox->box.list = list; mbox->box.mail_vfuncs = &virtual_mail_vfuncs; + mbox->vfuncs = virtual_mailbox_vfuncs; index_storage_mailbox_alloc(&mbox->box, name, flags, VIRTUAL_INDEX_PREFIX); @@ -530,9 +532,6 @@ index_storage_get_seq_range, index_storage_get_uid_range, index_storage_get_expunges, - virtual_get_virtual_uid, - virtual_get_virtual_backend_boxes, - virtual_get_virtual_box_patterns, NULL, virtual_mail_alloc, index_header_lookup_init, @@ -551,3 +550,9 @@ virtual_is_inconsistent } }; + +struct virtual_mailbox_vfuncs virtual_mailbox_vfuncs = { + virtual_get_virtual_uid, + virtual_get_virtual_backend_boxes, + virtual_get_virtual_box_patterns +};
--- a/src/plugins/virtual/virtual-storage.h Mon Dec 06 03:11:08 2010 +0000 +++ b/src/plugins/virtual/virtual-storage.h Mon Dec 06 03:28:29 2010 +0000 @@ -99,6 +99,19 @@ }; ARRAY_DEFINE_TYPE(virtual_backend_box, struct virtual_backend_box *); +struct virtual_mailbox_vfuncs { + bool (*get_virtual_uid)(struct mailbox *box, + const char *backend_mailbox, + uint32_t backend_uidvalidity, + uint32_t backend_uid, uint32_t *uid_r); + void (*get_virtual_backend_boxes)(struct mailbox *box, + ARRAY_TYPE(mailboxes) *mailboxes, + bool only_with_msgs); + void (*get_virtual_box_patterns)(struct mailbox *box, + ARRAY_TYPE(mailbox_virtual_patterns) *includes, + ARRAY_TYPE(mailbox_virtual_patterns) *excludes); +}; + struct virtual_mailbox { struct mailbox box; struct virtual_storage *storage; @@ -122,6 +135,8 @@ ARRAY_TYPE(mailbox_virtual_patterns) list_include_patterns; ARRAY_TYPE(mailbox_virtual_patterns) list_exclude_patterns; + struct virtual_mailbox_vfuncs vfuncs; + unsigned int uids_mapped:1; unsigned int sync_initialized:1; unsigned int inconsistent:1;