55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainen#ifndef IMAP_SYNC_PRIVATE_H
55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainen#define IMAP_SYNC_PRIVATE_H
55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainen
55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainen#include "imap-sync.h"
55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainen
08406452bf0deae412437463618ed3f870ed03d5Timo Sirainenstruct imap_client_sync_context {
08406452bf0deae412437463618ed3f870ed03d5Timo Sirainen /* if multiple commands are in progress, we may need to wait for them
08406452bf0deae412437463618ed3f870ed03d5Timo Sirainen to finish before syncing mailbox. */
08406452bf0deae412437463618ed3f870ed03d5Timo Sirainen unsigned int counter;
08406452bf0deae412437463618ed3f870ed03d5Timo Sirainen enum mailbox_sync_flags flags;
08406452bf0deae412437463618ed3f870ed03d5Timo Sirainen enum imap_sync_flags imap_flags;
08406452bf0deae412437463618ed3f870ed03d5Timo Sirainen const char *tagline;
08406452bf0deae412437463618ed3f870ed03d5Timo Sirainen};
08406452bf0deae412437463618ed3f870ed03d5Timo Sirainen
55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainenstruct imap_sync_context {
55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainen struct client *client;
55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainen struct mailbox *box;
55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainen enum imap_sync_flags imap_flags;
55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainen
55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainen struct mailbox_transaction_context *t;
55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainen struct mailbox_sync_context *sync_ctx;
55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainen struct mail *mail;
55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainen
55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainen struct mailbox_status status;
55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainen struct mailbox_sync_status sync_status;
55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainen
55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainen struct mailbox_sync_rec sync_rec;
55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainen ARRAY_TYPE(keywords) tmp_keywords;
55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainen ARRAY_TYPE(seq_range) expunges;
55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainen uint32_t seq;
55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainen
55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainen ARRAY_TYPE(seq_range) search_adds, search_removes;
55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainen unsigned int search_update_idx;
55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainen
55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainen unsigned int messages_count;
55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainen
d64280bc41338078701e79aefaab3169686b683dTimo Sirainen /* Module-specific contexts. */
d64280bc41338078701e79aefaab3169686b683dTimo Sirainen ARRAY(union imap_module_context *) module_contexts;
d64280bc41338078701e79aefaab3169686b683dTimo Sirainen
55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainen bool failed:1;
55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainen bool finished:1;
55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainen bool no_newmail:1;
55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainen bool have_new_mails:1;
55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainen bool search_update_notifying:1;
55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainen};
55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainen
55d35a8b8036093b94fb1bb0f0339fc43fad52e1Timo Sirainen#endif