Beispiel #1
0
int fts_backend_get_last_uid(struct fts_backend *backend, struct mailbox *box,
                             uint32_t *last_uid_r)
{
    struct fts_index_header hdr;

    if (box->virtual_vfuncs != NULL) {
        /* virtual mailboxes themselves don't have any indexes,
           so catch this call here */
        if (!fts_index_get_header(box, &hdr))
            *last_uid_r = 0;
        else
            *last_uid_r = hdr.last_indexed_uid;
        return 0;
    }

    return backend->v.get_last_uid(backend, box, last_uid_r);
}
Beispiel #2
0
int fts_backend_get_last_uid(struct fts_backend *backend, struct mailbox *box,
			     uint32_t *last_uid_r)
{
	struct fts_index_header hdr;

	if (strcmp(box->storage->name, VIRTUAL_STORAGE_NAME) == 0) {
		/* virtual mailboxes themselves don't have any indexes,
		   so catch this call here */
		if (!fts_index_get_header(box, &hdr))
			*last_uid_r = 0;
		else
			*last_uid_r = hdr.last_indexed_uid;
		return 0;
	}

	return backend->v.get_last_uid(backend, box, last_uid_r);
}
static int
fts_backend_solr_get_last_uid(struct fts_backend *_backend,
			      struct mailbox *box, uint32_t *last_uid_r)
{
	struct solr_fts_backend *backend =
		(struct solr_fts_backend *)_backend;
	struct fts_index_header hdr;

	if (fts_index_get_header(box, &hdr)) {
		*last_uid_r = hdr.last_indexed_uid;
		return 0;
	}

	/* either nothing has been indexed, or the index was corrupted.
	   do it the slow way. */
	if (fts_backend_solr_get_last_uid_fallback(backend, box, last_uid_r) < 0)
		return -1;

	fts_index_set_last_uid(box, *last_uid_r);
	return 0;
}