annotate src/lib-index/mail-index-modseq.h @ 22576:707ae9de3812

lib: istream-multiplex - Minor code cleanup Avoid propagating the error twice, and avoid any confusion about what "got" actually contains.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Thu, 05 Oct 2017 20:24:11 +0300
parents e0f6374d1209
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7627
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1 #ifndef MAIL_INDEX_MODSEQ_H
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
2 #define MAIL_INDEX_MODSEQ_H
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
3
15081
4b0cbecf369d Removed all the "enum foo;" declarations.
Timo Sirainen <tss@iki.fi>
parents: 14501
diff changeset
4 #include "mail-types.h"
4b0cbecf369d Removed all the "enum foo;" declarations.
Timo Sirainen <tss@iki.fi>
parents: 14501
diff changeset
5
7931
502cfdcc5650 Keep modseqs as 1 until the first modseq ext intro record enables them.
Timo Sirainen <tss@iki.fi>
parents: 7812
diff changeset
6 #define MAIL_INDEX_MODSEQ_EXT_NAME "modseq"
502cfdcc5650 Keep modseqs as 1 until the first modseq ext intro record enables them.
Timo Sirainen <tss@iki.fi>
parents: 7812
diff changeset
7
7627
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
8 struct mail_keywords;
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
9 struct mail_index;
7812
d10cb44ab446 Modseqs are no longer calculated from transaction log sequence + offset.
Timo Sirainen <tss@iki.fi>
parents: 7629
diff changeset
10 struct mail_index_map;
7627
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
11 struct mail_index_view;
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
12 struct mail_index_modseq;
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
13 struct mail_index_map_modseq;
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
14 struct mail_index_sync_map_ctx;
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
15
7629
bad3a811a148 Added QRESYNC support.
Timo Sirainen <tss@iki.fi>
parents: 7627
diff changeset
16 struct mail_index_modseq_header {
bad3a811a148 Added QRESYNC support.
Timo Sirainen <tss@iki.fi>
parents: 7627
diff changeset
17 /* highest used modseq */
bad3a811a148 Added QRESYNC support.
Timo Sirainen <tss@iki.fi>
parents: 7627
diff changeset
18 uint64_t highest_modseq;
bad3a811a148 Added QRESYNC support.
Timo Sirainen <tss@iki.fi>
parents: 7627
diff changeset
19 /* last tracked log file position */
bad3a811a148 Added QRESYNC support.
Timo Sirainen <tss@iki.fi>
parents: 7627
diff changeset
20 uint32_t log_seq;
bad3a811a148 Added QRESYNC support.
Timo Sirainen <tss@iki.fi>
parents: 7627
diff changeset
21 uint32_t log_offset;
bad3a811a148 Added QRESYNC support.
Timo Sirainen <tss@iki.fi>
parents: 7627
diff changeset
22 };
bad3a811a148 Added QRESYNC support.
Timo Sirainen <tss@iki.fi>
parents: 7627
diff changeset
23
7627
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
24 void mail_index_modseq_init(struct mail_index *index);
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
25
7812
d10cb44ab446 Modseqs are no longer calculated from transaction log sequence + offset.
Timo Sirainen <tss@iki.fi>
parents: 7629
diff changeset
26 const struct mail_index_modseq_header *
d10cb44ab446 Modseqs are no longer calculated from transaction log sequence + offset.
Timo Sirainen <tss@iki.fi>
parents: 7629
diff changeset
27 mail_index_map_get_modseq_header(struct mail_index_map *map);
d10cb44ab446 Modseqs are no longer calculated from transaction log sequence + offset.
Timo Sirainen <tss@iki.fi>
parents: 7629
diff changeset
28 uint64_t mail_index_map_modseq_get_highest(struct mail_index_map *map);
7627
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
29 void mail_index_modseq_enable(struct mail_index *index);
14501
972b296db20a lib-index: Added mail_index_have_modseq_tracking() needed for previous commit.
Timo Sirainen <tss@iki.fi>
parents: 9691
diff changeset
30 bool mail_index_have_modseq_tracking(struct mail_index *index);
7627
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
31 uint64_t mail_index_modseq_get_highest(struct mail_index_view *view);
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
32
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
33 uint64_t mail_index_modseq_lookup(struct mail_index_view *view, uint32_t seq);
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
34 uint64_t mail_index_modseq_lookup_flags(struct mail_index_view *view,
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
35 enum mail_flags flags_mask,
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
36 uint32_t seq);
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
37 uint64_t mail_index_modseq_lookup_keywords(struct mail_index_view *view,
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
38 const struct mail_keywords *keywords,
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
39 uint32_t seq);
9691
b09d9350a2d9 Added ability to specify message's minimum modseq value.
Timo Sirainen <tss@iki.fi>
parents: 8131
diff changeset
40 int mail_index_modseq_set(struct mail_index_view *view,
b09d9350a2d9 Added ability to specify message's minimum modseq value.
Timo Sirainen <tss@iki.fi>
parents: 8131
diff changeset
41 uint32_t seq, uint64_t min_modseq);
7627
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
42
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
43 struct mail_index_modseq_sync *
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
44 mail_index_modseq_sync_begin(struct mail_index_sync_map_ctx *sync_map_ctx);
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
45 void mail_index_modseq_sync_end(struct mail_index_modseq_sync **ctx);
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
46
8131
32a045eaf6b6 Fixed crashes related to struct mail_index_map_modseq handling.
Timo Sirainen <tss@iki.fi>
parents: 7931
diff changeset
47 void mail_index_modseq_sync_map_replaced(struct mail_index_modseq_sync *ctx);
7627
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
48 void mail_index_modseq_hdr_update(struct mail_index_modseq_sync *ctx);
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
49 void mail_index_modseq_append(struct mail_index_modseq_sync *ctx, uint32_t seq);
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
50 void mail_index_modseq_expunge(struct mail_index_modseq_sync *ctx,
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
51 uint32_t seq1, uint32_t seq2);
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
52 void mail_index_modseq_update_flags(struct mail_index_modseq_sync *ctx,
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
53 enum mail_flags flags_mask,
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
54 uint32_t seq1, uint32_t seq2);
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
55 void mail_index_modseq_update_keyword(struct mail_index_modseq_sync *ctx,
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
56 unsigned int keyword_idx,
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
57 uint32_t seq1, uint32_t seq2);
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
58 void mail_index_modseq_reset_keywords(struct mail_index_modseq_sync *ctx,
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
59 uint32_t seq1, uint32_t seq2);
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
60
8131
32a045eaf6b6 Fixed crashes related to struct mail_index_map_modseq handling.
Timo Sirainen <tss@iki.fi>
parents: 7931
diff changeset
61 struct mail_index_map_modseq *
32a045eaf6b6 Fixed crashes related to struct mail_index_map_modseq handling.
Timo Sirainen <tss@iki.fi>
parents: 7931
diff changeset
62 mail_index_map_modseq_clone(const struct mail_index_map_modseq *mmap);
32a045eaf6b6 Fixed crashes related to struct mail_index_map_modseq handling.
Timo Sirainen <tss@iki.fi>
parents: 7931
diff changeset
63 void mail_index_map_modseq_free(struct mail_index_map_modseq **mmap);
7627
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
64
7812
d10cb44ab446 Modseqs are no longer calculated from transaction log sequence + offset.
Timo Sirainen <tss@iki.fi>
parents: 7629
diff changeset
65 bool mail_index_modseq_get_next_log_offset(struct mail_index_view *view,
d10cb44ab446 Modseqs are no longer calculated from transaction log sequence + offset.
Timo Sirainen <tss@iki.fi>
parents: 7629
diff changeset
66 uint64_t modseq, uint32_t *log_seq_r,
d10cb44ab446 Modseqs are no longer calculated from transaction log sequence + offset.
Timo Sirainen <tss@iki.fi>
parents: 7629
diff changeset
67 uoff_t *log_offset_r);
7629
bad3a811a148 Added QRESYNC support.
Timo Sirainen <tss@iki.fi>
parents: 7627
diff changeset
68
7627
4fd41f9467ea Left out from initial CONDSTORE commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
69 #endif