view src/lib-storage/index/imapc/imapc-sync.h @ 22041:21fab4826117

imapc: Try to merge STOREs together as much as possible when syncing
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Thu, 04 May 2017 19:59:41 +0300
parents 4b0cbecf369d
children c7cb96a96e2d
line wrap: on
line source

#ifndef CYDIR_SYNC_H
#define CYDIR_SYNC_H

struct mailbox;
struct mailbox_sync_status;

struct imapc_sync_store {
	enum modify_type modify_type;
	const char *flags;

	ARRAY_TYPE(seq_range) uids;
};

struct imapc_sync_context {
	struct imapc_mailbox *mbox;
        struct mail_index_sync_ctx *index_sync_ctx;
	struct mail_index_view *sync_view;
	struct mail_index_transaction *trans;

	const ARRAY_TYPE(keywords) *keywords;
	ARRAY_TYPE(seq_range) expunged_uids;
	unsigned int sync_command_count;

	pool_t pool;
	HASH_TABLE(struct imapc_sync_store *, struct imapc_sync_store *) stores;

	uint32_t prev_uid1, prev_uid2;
	enum modify_type prev_modify_type;
	string_t *prev_flags;

	unsigned int failed:1;
};

struct mailbox_sync_context *
imapc_mailbox_sync_init(struct mailbox *box, enum mailbox_sync_flags flags);
int imapc_mailbox_sync_deinit(struct mailbox_sync_context *ctx,
			      struct mailbox_sync_status *status_r);
void imapc_sync_mailbox_reopened(struct imapc_mailbox *mbox);

#endif