fts-backend-squat.c revision e62f6437a4ff01d692a5a61369fe4168d69191ed
5a580c3a38ced62d4bcc95b8ac7c4f2935b5d294Timo Sirainen/* Copyright (C) 2006 Timo Sirainen */
7384b4e78eaab44693c985192276e31322155e32Stephan Bosch#define SQUAT_FILE_PREFIX "dovecot.index.search"
7384b4e78eaab44693c985192276e31322155e32Stephan Boschstatic struct fts_backend *fts_backend_squat_init(struct mailbox *box)
7384b4e78eaab44693c985192276e31322155e32Stephan Bosch path = mail_storage_get_mailbox_index_dir(storage,
feba5e502b2131c9a1c766b7ef9ff041dbf71d1dStephan Bosch /* in-memory indexes */
feba5e502b2131c9a1c766b7ef9ff041dbf71d1dStephan Bosch squat_trie_open(t_strconcat(path, "/"SQUAT_FILE_PREFIX, NULL),
7384b4e78eaab44693c985192276e31322155e32Stephan Boschstatic void fts_backend_squat_deinit(struct fts_backend *_backend)
7384b4e78eaab44693c985192276e31322155e32Stephan Boschstatic int fts_backend_squat_get_last_uid(struct fts_backend *_backend,
7384b4e78eaab44693c985192276e31322155e32Stephan Bosch return squat_trie_get_last_uid(backend->trie, last_uid_r);
7384b4e78eaab44693c985192276e31322155e32Stephan Boschfts_backend_squat_build_init(struct fts_backend *_backend, uint32_t *last_uid_r)
7384b4e78eaab44693c985192276e31322155e32Stephan Bosch ctx = i_new(struct squat_fts_backend_build_context, 1);
7384b4e78eaab44693c985192276e31322155e32Stephan Bosch ctx->trie_ctx = squat_trie_build_init(backend->trie, last_uid_r);
7384b4e78eaab44693c985192276e31322155e32Stephan Boschfts_backend_squat_build_more(struct fts_backend_build_context *_ctx,
7384b4e78eaab44693c985192276e31322155e32Stephan Bosch (struct squat_fts_backend_build_context *)_ctx;
b72c3363092b73cab1da2de4a9d75592e7d8fd6bTimo Sirainen return squat_trie_build_more(ctx->trie_ctx, uid, data, size);
7384b4e78eaab44693c985192276e31322155e32Stephan Boschfts_backend_squat_build_deinit(struct fts_backend_build_context *_ctx)
b72c3363092b73cab1da2de4a9d75592e7d8fd6bTimo Sirainen (struct squat_fts_backend_build_context *)_ctx;
7384b4e78eaab44693c985192276e31322155e32Stephan Boschfts_backend_squat_expunge(struct fts_backend *_backend __attr_unused__,
b72c3363092b73cab1da2de4a9d75592e7d8fd6bTimo Sirainenstatic int get_uids(struct mailbox *box, ARRAY_TYPE(seq_range) *uids,
7384b4e78eaab44693c985192276e31322155e32Stephan Bosch unsigned int count = 0;
7384b4e78eaab44693c985192276e31322155e32Stephan Bosch ctx = mailbox_search_init(t, NULL, &search_arg, NULL);
b72c3363092b73cab1da2de4a9d75592e7d8fd6bTimo Sirainenfts_backend_squat_expunge_finish(struct fts_backend *_backend,
7384b4e78eaab44693c985192276e31322155e32Stephan Bosch unsigned int count;
7384b4e78eaab44693c985192276e31322155e32Stephan Bosch (void)squat_trie_mark_having_expunges(backend->trie, &uids,
7384b4e78eaab44693c985192276e31322155e32Stephan Boschstatic int fts_backend_squat_lock(struct fts_backend *_backend)
7384b4e78eaab44693c985192276e31322155e32Stephan Bosch return squat_trie_lock(backend->trie, F_RDLCK);
b72c3363092b73cab1da2de4a9d75592e7d8fd6bTimo Sirainenstatic void fts_backend_squat_unlock(struct fts_backend *_backend)
b72c3363092b73cab1da2de4a9d75592e7d8fd6bTimo Sirainenfts_backend_squat_lookup(struct fts_backend *_backend, const char *key,
7384b4e78eaab44693c985192276e31322155e32Stephan Bosch return squat_trie_lookup(backend->trie, result, key);
b72c3363092b73cab1da2de4a9d75592e7d8fd6bTimo Sirainenfts_backend_squat_filter(struct fts_backend *_backend, const char *key,