summaryrefslogtreecommitdiffstats
path: root/src/imap/imap-sync-private.h
blob: b0b1715a09030aa980fbcbe9d258b3641c563304 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#ifndef IMAP_SYNC_PRIVATE_H
#define IMAP_SYNC_PRIVATE_H

#include "imap-sync.h"

struct imap_client_sync_context {
	/* if multiple commands are in progress, we may need to wait for them
	   to finish before syncing mailbox. */
	unsigned int counter;
	enum mailbox_sync_flags flags;
	enum imap_sync_flags imap_flags;
	const char *tagline;
};

struct imap_sync_context {
	struct client *client;
	struct mailbox *box;
        enum imap_sync_flags imap_flags;

	struct mailbox_transaction_context *t;
	struct mailbox_sync_context *sync_ctx;
	struct mail *mail;

	struct mailbox_status status;
	struct mailbox_sync_status sync_status;

	struct mailbox_sync_rec sync_rec;
	ARRAY_TYPE(keywords) tmp_keywords;
	ARRAY_TYPE(seq_range) expunges;
	uint32_t seq;

	ARRAY_TYPE(seq_range) search_adds, search_removes;
	unsigned int search_update_idx;

	unsigned int messages_count;

	/* Module-specific contexts. */
	ARRAY(union imap_module_context *) module_contexts;

	bool failed:1;
	bool finished:1;
	bool no_newmail:1;
	bool have_new_mails:1;
	bool search_update_notifying:1;
};

#endif