Lines Matching defs:backend
15 void fts_backend_register(const struct fts_backend *backend)
19 array_append(&backends, &backend, 1);
35 i_panic("fts_backend_unregister(%s): unknown backend", name);
61 struct fts_backend *backend;
65 *error_r = "Unknown backend";
69 backend = be->v.alloc();
70 backend->ns = ns;
71 if (backend->v.init(backend, error_r) < 0) {
72 i_free(backend);
75 *backend_r = backend;
81 struct fts_backend *backend = *_backend;
84 backend->v.deinit(backend);
87 int fts_backend_get_last_uid(struct fts_backend *backend, struct mailbox *box,
102 return backend->v.get_last_uid(backend, box, last_uid_r);
105 bool fts_backend_is_updating(struct fts_backend *backend)
107 return backend->updating;
111 fts_backend_update_init(struct fts_backend *backend)
115 i_assert(!backend->updating);
117 backend->updating = TRUE;
118 ctx = backend->v.update_init(backend);
119 if ((backend->flags & FTS_BACKEND_FLAG_NORMALIZE_INPUT) != 0)
120 ctx->normalizer = backend->ns->user->default_normalizer;
128 ctx->backend->v.update_set_mailbox(ctx, ctx->cur_box);
136 struct fts_backend *backend = ctx->backend;
144 ret = backend->v.update_deinit(ctx);
145 backend->updating = FALSE;
153 /* make sure we don't reference the backend box anymore */
154 ctx->backend->v.update_set_mailbox(ctx, NULL);
164 ctx->backend->v.update_expunge(ctx, uid);
174 if (!ctx->backend->v.update_set_build_key(ctx, key))
183 ctx->backend->v.update_unset_build_key(ctx);
193 return ctx->backend->v.update_build_more(ctx, data, size);
196 int fts_backend_refresh(struct fts_backend *backend)
198 return backend->v.refresh(backend);
201 int fts_backend_reset_last_uids(struct fts_backend *backend)
208 iter = mailbox_list_iter_init(backend->ns->list, "*",
228 int fts_backend_rescan(struct fts_backend *backend)
233 box = mailbox_alloc(backend->ns->list, "", 0);
239 return fts_backend_reset_last_uids(backend);
242 return backend->v.rescan == NULL ? 0 :
243 backend->v.rescan(backend);
246 int fts_backend_optimize(struct fts_backend *backend)
248 return backend->v.optimize == NULL ? 0 :
249 backend->v.optimize(backend);
301 bool fts_backend_default_can_lookup(struct fts_backend *backend,
309 if (fts_backend_default_can_lookup(backend,
328 bool fts_backend_can_lookup(struct fts_backend *backend,
331 return backend->v.can_lookup(backend, args);
344 int fts_backend_lookup(struct fts_backend *backend, struct mailbox *box,
353 if (backend->v.lookup(backend, box, args, flags, result) < 0)
363 int fts_backend_lookup_multi(struct fts_backend *backend,
373 if (backend->v.lookup_multi != NULL) {
374 if (backend->v.lookup_multi(backend, boxes, args,
393 if (backend->v.lookup(backend, boxes[i], args,
400 void fts_backend_lookup_done(struct fts_backend *backend)
402 if (backend->v.lookup_done != NULL)
403 backend->v.lookup_done(backend);