1 #ifndef DSYNC_MAILBOX_IMPORT_H
2 #define DSYNC_MAILBOX_IMPORT_H
3 
4 #include "mail-error.h"
5 
6 enum dsync_mailbox_import_flags {
7 	DSYNC_MAILBOX_IMPORT_FLAG_MASTER_BRAIN		= 0x01,
8 	DSYNC_MAILBOX_IMPORT_FLAG_WANT_MAIL_REQUESTS	= 0x02,
9 	DSYNC_MAILBOX_IMPORT_FLAG_REVERT_LOCAL_CHANGES	= 0x04,
10 	DSYNC_MAILBOX_IMPORT_FLAG_DEBUG			= 0x08,
11 	DSYNC_MAILBOX_IMPORT_FLAG_MAILS_HAVE_GUIDS	= 0x10,
12 	DSYNC_MAILBOX_IMPORT_FLAG_MAILS_USE_GUID128	= 0x20,
13 	DSYNC_MAILBOX_IMPORT_FLAG_NO_NOTIFY		= 0x40,
14 	DSYNC_MAILBOX_IMPORT_FLAG_EMPTY_HDR_WORKAROUND	= 0x100
15 };
16 
17 struct mailbox;
18 struct dsync_mailbox_attribute;
19 struct dsync_mail;
20 struct dsync_mail_change;
21 struct dsync_transaction_log_scan;
22 
23 struct dsync_mailbox_importer *
24 dsync_mailbox_import_init(struct mailbox *box,
25 			  struct mailbox *virtual_all_box,
26 			  struct dsync_transaction_log_scan *log_scan,
27 			  uint32_t last_common_uid,
28 			  uint64_t last_common_modseq,
29 			  uint64_t last_common_pvt_modseq,
30 			  uint32_t remote_uid_next,
31 			  uint32_t remote_first_recent_uid,
32 			  uint64_t remote_highest_modseq,
33 			  uint64_t remote_highest_pvt_modseq,
34 			  time_t sync_since_timestamp,
35 			  time_t sync_until_timestamp,
36 			  uoff_t sync_max_size,
37 			  const char *sync_flag,
38 			  unsigned int commit_msgs_interval,
39 			  enum dsync_mailbox_import_flags flags,
40 			  unsigned int hdr_hash_version,
41 			  const char *const *hashed_headers);
42 int dsync_mailbox_import_attribute(struct dsync_mailbox_importer *importer,
43 				   const struct dsync_mailbox_attribute *attr);
44 int dsync_mailbox_import_change(struct dsync_mailbox_importer *importer,
45 				const struct dsync_mail_change *change);
46 int dsync_mailbox_import_changes_finish(struct dsync_mailbox_importer *importer);
47 const struct dsync_mail_request *
48 dsync_mailbox_import_next_request(struct dsync_mailbox_importer *importer);
49 int dsync_mailbox_import_mail(struct dsync_mailbox_importer *importer,
50 			      const struct dsync_mail *mail);
51 int dsync_mailbox_import_deinit(struct dsync_mailbox_importer **importer,
52 				bool success,
53 				uint32_t *last_common_uid_r,
54 				uint64_t *last_common_modseq_r,
55 				uint64_t *last_common_pvt_modseq_r,
56 				uint32_t *last_messages_count_r,
57 				const char **changes_during_sync_r,
58 				bool *require_full_resync_r,
59 				enum mail_error *error_r);
60 
61 const char *dsync_mailbox_import_get_proctitle(struct dsync_mailbox_importer *importer);
62 
63 #endif
64