1
#ifndef DSYNC_TRANSACTION_LOG_SCAN_H
2
#define DSYNC_TRANSACTION_LOG_SCAN_H
4
HASH_TABLE_DEFINE_TYPE(dsync_uid_mail_change,
5
void *, struct dsync_mail_change *);
6
HASH_TABLE_DEFINE_TYPE(dsync_attr_change,
7
struct dsync_mailbox_attribute *,
8
struct dsync_mailbox_attribute *);
10
struct mail_index_view;
11
struct dsync_transaction_log_scan;
13
int dsync_transaction_log_scan_init(struct mail_index_view *view,
14
struct mail_index_view *pvt_view,
15
uint32_t highest_wanted_uid,
16
uint64_t modseq, uint64_t pvt_modseq,
17
struct dsync_transaction_log_scan **scan_r);
18
HASH_TABLE_TYPE(dsync_uid_mail_change)
19
dsync_transaction_log_scan_get_hash(struct dsync_transaction_log_scan *scan);
20
HASH_TABLE_TYPE(dsync_attr_change)
21
dsync_transaction_log_scan_get_attr_hash(struct dsync_transaction_log_scan *scan);
22
/* Returns TRUE if the entire transaction log was scanned */
23
bool dsync_transaction_log_scan_has_all_changes(struct dsync_transaction_log_scan *scan);
24
/* If the given UID has been expunged after the initial log scan, create/update
25
a change record for it and return it. */
26
struct dsync_mail_change *
27
dsync_transaction_log_scan_find_new_expunge(struct dsync_transaction_log_scan *scan,
29
void dsync_transaction_log_scan_deinit(struct dsync_transaction_log_scan **scan);