annotate src/lib-index/mail-index-transaction-private.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 bd1d7007cb01
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6410
e4eb71ae8e96 Changed .h ifdef/defines to use <NAME>_H format.
Timo Sirainen <tss@iki.fi>
parents: 6093
diff changeset
1 #ifndef MAIL_INDEX_TRANSACTION_PRIVATE_H
e4eb71ae8e96 Changed .h ifdef/defines to use <NAME>_H format.
Timo Sirainen <tss@iki.fi>
parents: 6093
diff changeset
2 #define MAIL_INDEX_TRANSACTION_PRIVATE_H
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
3
4451
1a35d53c18fc Array API redesigned to work using unions. It now provides type safety
Timo Sirainen <tss@iki.fi>
parents: 3883
diff changeset
4 #include "seq-range-array.h"
2224
a816e2d88406 Added mail_index_transaction_get_updated_view() which can be used to access
Timo Sirainen <tss@iki.fi>
parents: 2201
diff changeset
5 #include "mail-transaction-log.h"
a816e2d88406 Added mail_index_transaction_get_updated_view() which can be used to access
Timo Sirainen <tss@iki.fi>
parents: 2201
diff changeset
6
8929
9c50e7303513 Added mail_index_atomic_inc_ext() for atomically incrementing numbers in extensions.
Timo Sirainen <tss@iki.fi>
parents: 8672
diff changeset
7 ARRAY_DEFINE_TYPE(seq_array_array, ARRAY_TYPE(seq_array));
9c50e7303513 Added mail_index_atomic_inc_ext() for atomically incrementing numbers in extensions.
Timo Sirainen <tss@iki.fi>
parents: 8672
diff changeset
8
3254
a2943c050571 Keywords are now stored in X-Keywords headers in mbox. Did several related
Timo Sirainen <tss@iki.fi>
parents: 3191
diff changeset
9 struct mail_index_transaction_keyword_update {
4451
1a35d53c18fc Array API redesigned to work using unions. It now provides type safety
Timo Sirainen <tss@iki.fi>
parents: 3883
diff changeset
10 ARRAY_TYPE(seq_range) add_seq;
1a35d53c18fc Array API redesigned to work using unions. It now provides type safety
Timo Sirainen <tss@iki.fi>
parents: 3883
diff changeset
11 ARRAY_TYPE(seq_range) remove_seq;
3254
a2943c050571 Keywords are now stored in X-Keywords headers in mbox. Did several related
Timo Sirainen <tss@iki.fi>
parents: 3191
diff changeset
12 };
a2943c050571 Keywords are now stored in X-Keywords headers in mbox. Did several related
Timo Sirainen <tss@iki.fi>
parents: 3191
diff changeset
13
5897
3ec9ce7cd5e7 Implemented mail_index_update_header_ext()
Timo Sirainen <tss@iki.fi>
parents: 5849
diff changeset
14 struct mail_index_transaction_ext_hdr_update {
7896
efb782e078b9 mail_index_update_header_ext() can now be called multiple times for the same
Timo Sirainen <tss@iki.fi>
parents: 7563
diff changeset
15 size_t alloc_size;
efb782e078b9 mail_index_update_header_ext() can now be called multiple times for the same
Timo Sirainen <tss@iki.fi>
parents: 7563
diff changeset
16 /* mask is in bytes, not bits */
efb782e078b9 mail_index_update_header_ext() can now be called multiple times for the same
Timo Sirainen <tss@iki.fi>
parents: 7563
diff changeset
17 unsigned char *mask;
efb782e078b9 mail_index_update_header_ext() can now be called multiple times for the same
Timo Sirainen <tss@iki.fi>
parents: 7563
diff changeset
18 unsigned char *data;
5897
3ec9ce7cd5e7 Implemented mail_index_update_header_ext()
Timo Sirainen <tss@iki.fi>
parents: 5849
diff changeset
19 };
3ec9ce7cd5e7 Implemented mail_index_update_header_ext()
Timo Sirainen <tss@iki.fi>
parents: 5849
diff changeset
20
4453
85fcdb478608 Beginnings of joining mail-storage API more closely to mail-index, so that
Timo Sirainen <timo.sirainen@movial.fi>
parents: 4451
diff changeset
21 struct mail_index_transaction_vfuncs {
9611
546adc9dd14b Isolated all cache transaction handling code to a single file.
Timo Sirainen <tss@iki.fi>
parents: 9252
diff changeset
22 void (*reset)(struct mail_index_transaction *t);
4453
85fcdb478608 Beginnings of joining mail-storage API more closely to mail-index, so that
Timo Sirainen <timo.sirainen@movial.fi>
parents: 4451
diff changeset
23 int (*commit)(struct mail_index_transaction *t,
10367
75d3d4374dda Transaction commits can now track how many uid/modseq updates were ignored.
Timo Sirainen <tss@iki.fi>
parents: 9725
diff changeset
24 struct mail_index_transaction_commit_result *result_r);
4453
85fcdb478608 Beginnings of joining mail-storage API more closely to mail-index, so that
Timo Sirainen <timo.sirainen@movial.fi>
parents: 4451
diff changeset
25 void (*rollback)(struct mail_index_transaction *t);
85fcdb478608 Beginnings of joining mail-storage API more closely to mail-index, so that
Timo Sirainen <timo.sirainen@movial.fi>
parents: 4451
diff changeset
26 };
85fcdb478608 Beginnings of joining mail-storage API more closely to mail-index, so that
Timo Sirainen <timo.sirainen@movial.fi>
parents: 4451
diff changeset
27
5453
a0a1432bb4e8 Better type safety to module_contexts arrays. Already fixed some bugs.
Timo Sirainen <tss@iki.fi>
parents: 5228
diff changeset
28 union mail_index_transaction_module_context {
21657
69f21a7bd37e lib-index: Add missing initialization for chained hooks
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 21655
diff changeset
29 struct mail_index_transaction_vfuncs super;
5453
a0a1432bb4e8 Better type safety to module_contexts arrays. Already fixed some bugs.
Timo Sirainen <tss@iki.fi>
parents: 5228
diff changeset
30 struct mail_index_module_register *reg;
a0a1432bb4e8 Better type safety to module_contexts arrays. Already fixed some bugs.
Timo Sirainen <tss@iki.fi>
parents: 5228
diff changeset
31 };
a0a1432bb4e8 Better type safety to module_contexts arrays. Already fixed some bugs.
Timo Sirainen <tss@iki.fi>
parents: 5228
diff changeset
32
14599
dbd42f7198eb shared mailboxes: Per-user flags can now be stored in private index files.
Timo Sirainen <tss@iki.fi>
parents: 14580
diff changeset
33 struct mail_index_flag_update {
dbd42f7198eb shared mailboxes: Per-user flags can now be stored in private index files.
Timo Sirainen <tss@iki.fi>
parents: 14580
diff changeset
34 uint32_t uid1, uid2;
dbd42f7198eb shared mailboxes: Per-user flags can now be stored in private index files.
Timo Sirainen <tss@iki.fi>
parents: 14580
diff changeset
35 uint16_t add_flags;
dbd42f7198eb shared mailboxes: Per-user flags can now be stored in private index files.
Timo Sirainen <tss@iki.fi>
parents: 14580
diff changeset
36 uint16_t remove_flags;
dbd42f7198eb shared mailboxes: Per-user flags can now be stored in private index files.
Timo Sirainen <tss@iki.fi>
parents: 14580
diff changeset
37 };
dbd42f7198eb shared mailboxes: Per-user flags can now be stored in private index files.
Timo Sirainen <tss@iki.fi>
parents: 14580
diff changeset
38
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
39 struct mail_index_transaction {
17108
3f352534af56 lib-index: Keep track of views and transactions in linked lists.
Timo Sirainen <tss@iki.fi>
parents: 16208
diff changeset
40 struct mail_index_transaction *prev, *next;
2271
15d959d262a4 UIDs for appended messages can now be assigned all at once. Maildir now
Timo Sirainen <tss@iki.fi>
parents: 2240
diff changeset
41 int refcount;
4453
85fcdb478608 Beginnings of joining mail-storage API more closely to mail-index, so that
Timo Sirainen <timo.sirainen@movial.fi>
parents: 4451
diff changeset
42
6089
a19931ec66db Changed mail_transaction_begin() API to take flags parameter instead of two
Timo Sirainen <tss@iki.fi>
parents: 6037
diff changeset
43 enum mail_index_transaction_flags flags;
21657
69f21a7bd37e lib-index: Add missing initialization for chained hooks
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 21655
diff changeset
44 struct mail_index_transaction_vfuncs v, *vlast;
2271
15d959d262a4 UIDs for appended messages can now be assigned all at once. Maildir now
Timo Sirainen <tss@iki.fi>
parents: 2240
diff changeset
45 struct mail_index_view *view;
14532
5d45870e2e4a lib-index: Fixed MAIL_INDEX_SYNC_FLAG_AVOID_FLAG_UPDATES with concurrent keyword changes.
Timo Sirainen <tss@iki.fi>
parents: 13188
diff changeset
46 struct mail_index_view *latest_view;
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
47
5849
a9df50952600 Added support for resetting index.
Timo Sirainen <tss@iki.fi>
parents: 5453
diff changeset
48 /* NOTE: If you add anything new, remember to update
9624
2558ba736207 Keep track of expunged messages' GUIDs and expose them via mailbox_get_expunges().
Timo Sirainen <tss@iki.fi>
parents: 9622
diff changeset
49 mail_index_transaction_reset_v() to reset it. */
14920
a097ef0a9d6d Array API changed: ARRAY_DEFINE(name, type) -> ARRAY(type) name
Timo Sirainen <tss@iki.fi>
parents: 14682
diff changeset
50 ARRAY(struct mail_index_record) appends;
1917
68938dccbc45 Forced locking to be right with mprotect()ing index file. Support for
Timo Sirainen <tss@iki.fi>
parents: 1915
diff changeset
51 uint32_t first_new_seq, last_new_seq;
8672
735001110846 mail_index_transaction_get_next_uid() shouldn't sort appends. They may still be modified!
Timo Sirainen <tss@iki.fi>
parents: 8549
diff changeset
52 uint32_t highest_append_uid;
7913
e04513064165 CONDSTORE: STORE UNCHANGEDSINCE conflicts are now checked atomically.
Timo Sirainen <tss@iki.fi>
parents: 7896
diff changeset
53 /* lowest/highest sequence that updates flags/keywords */
e04513064165 CONDSTORE: STORE UNCHANGEDSINCE conflicts are now checked atomically.
Timo Sirainen <tss@iki.fi>
parents: 7896
diff changeset
54 uint32_t min_flagupdate_seq, max_flagupdate_seq;
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
55
14920
a097ef0a9d6d Array API changed: ARRAY_DEFINE(name, type) -> ARRAY(type) name
Timo Sirainen <tss@iki.fi>
parents: 14682
diff changeset
56 ARRAY(struct mail_transaction_modseq_update) modseq_updates;
a097ef0a9d6d Array API changed: ARRAY_DEFINE(name, type) -> ARRAY(type) name
Timo Sirainen <tss@iki.fi>
parents: 14682
diff changeset
57 ARRAY(struct mail_transaction_expunge_guid) expunges;
a097ef0a9d6d Array API changed: ARRAY_DEFINE(name, type) -> ARRAY(type) name
Timo Sirainen <tss@iki.fi>
parents: 14682
diff changeset
58 ARRAY(struct mail_index_flag_update) updates;
3113
2f53b73b3ea6 Added mail_index_update_flags_range() and optimized the non-range version as
Timo Sirainen <tss@iki.fi>
parents: 3086
diff changeset
59 size_t last_update_idx;
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
60
3322
49071cc19102 If UIDVALIDITY changes, don't invalidate the whole index. Just expunge all
Timo Sirainen <tss@iki.fi>
parents: 3254
diff changeset
61 unsigned char pre_hdr_change[sizeof(struct mail_index_header)];
49071cc19102 If UIDVALIDITY changes, don't invalidate the whole index. Just expunge all
Timo Sirainen <tss@iki.fi>
parents: 3254
diff changeset
62 unsigned char pre_hdr_mask[sizeof(struct mail_index_header)];
49071cc19102 If UIDVALIDITY changes, don't invalidate the whole index. Just expunge all
Timo Sirainen <tss@iki.fi>
parents: 3254
diff changeset
63 unsigned char post_hdr_change[sizeof(struct mail_index_header)];
49071cc19102 If UIDVALIDITY changes, don't invalidate the whole index. Just expunge all
Timo Sirainen <tss@iki.fi>
parents: 3254
diff changeset
64 unsigned char post_hdr_mask[sizeof(struct mail_index_header)];
2050
ee1095ccfd23 Index header changes now go through transaction log. Removed the kludgy
Timo Sirainen <tss@iki.fi>
parents: 1917
diff changeset
65
14920
a097ef0a9d6d Array API changed: ARRAY_DEFINE(name, type) -> ARRAY(type) name
Timo Sirainen <tss@iki.fi>
parents: 14682
diff changeset
66 ARRAY(struct mail_index_transaction_ext_hdr_update) ext_hdr_updates;
8929
9c50e7303513 Added mail_index_atomic_inc_ext() for atomically incrementing numbers in extensions.
Timo Sirainen <tss@iki.fi>
parents: 8672
diff changeset
67 ARRAY_TYPE(seq_array_array) ext_rec_updates;
9c50e7303513 Added mail_index_atomic_inc_ext() for atomically incrementing numbers in extensions.
Timo Sirainen <tss@iki.fi>
parents: 8672
diff changeset
68 ARRAY_TYPE(seq_array_array) ext_rec_atomics;
14920
a097ef0a9d6d Array API changed: ARRAY_DEFINE(name, type) -> ARRAY(type) name
Timo Sirainen <tss@iki.fi>
parents: 14682
diff changeset
69 ARRAY(struct mail_transaction_ext_intro) ext_resizes;
a097ef0a9d6d Array API changed: ARRAY_DEFINE(name, type) -> ARRAY(type) name
Timo Sirainen <tss@iki.fi>
parents: 14682
diff changeset
70 ARRAY(struct mail_transaction_ext_reset) ext_resets;
a097ef0a9d6d Array API changed: ARRAY_DEFINE(name, type) -> ARRAY(type) name
Timo Sirainen <tss@iki.fi>
parents: 14682
diff changeset
71 ARRAY(uint32_t) ext_reset_ids;
a097ef0a9d6d Array API changed: ARRAY_DEFINE(name, type) -> ARRAY(type) name
Timo Sirainen <tss@iki.fi>
parents: 14682
diff changeset
72 ARRAY(uint32_t) ext_reset_atomic;
3138
fbe844061fe2 Internal changes in how keywords are handled. struct mail_keywords isn't
Timo Sirainen <tss@iki.fi>
parents: 3113
diff changeset
73
14920
a097ef0a9d6d Array API changed: ARRAY_DEFINE(name, type) -> ARRAY(type) name
Timo Sirainen <tss@iki.fi>
parents: 14682
diff changeset
74 ARRAY(struct mail_index_transaction_keyword_update) keyword_updates;
16023
db0136374bb0 lib-index: mail_index_attribute_[un]set() adds changed attributes' keys to transaction log.
Timo Sirainen <tss@iki.fi>
parents: 14920
diff changeset
75 buffer_t *attribute_updates; /* [+-][ps]key\0.. */
16208
1ef57aca7d2f lib-index: Add timestamps and value lengths to attribute change records in transaction log.
Timo Sirainen <tss@iki.fi>
parents: 16023
diff changeset
76 buffer_t *attribute_updates_suffix; /* <timestamp>[<value len>].. */
2115
f720b3f15333 Modifying extra_records should work now.
Timo Sirainen <tss@iki.fi>
parents: 2050
diff changeset
77
9725
1411f157ffdd lib-index: Added mail_index_update_highest_modseq().
Timo Sirainen <tss@iki.fi>
parents: 9691
diff changeset
78 uint64_t min_highest_modseq;
7913
e04513064165 CONDSTORE: STORE UNCHANGEDSINCE conflicts are now checked atomically.
Timo Sirainen <tss@iki.fi>
parents: 7896
diff changeset
79 uint64_t max_modseq;
e04513064165 CONDSTORE: STORE UNCHANGEDSINCE conflicts are now checked atomically.
Timo Sirainen <tss@iki.fi>
parents: 7896
diff changeset
80 ARRAY_TYPE(seq_range) *conflict_seqs;
e04513064165 CONDSTORE: STORE UNCHANGEDSINCE conflicts are now checked atomically.
Timo Sirainen <tss@iki.fi>
parents: 7896
diff changeset
81
5453
a0a1432bb4e8 Better type safety to module_contexts arrays. Already fixed some bugs.
Timo Sirainen <tss@iki.fi>
parents: 5228
diff changeset
82 /* Module-specific contexts. */
14920
a097ef0a9d6d Array API changed: ARRAY_DEFINE(name, type) -> ARRAY(type) name
Timo Sirainen <tss@iki.fi>
parents: 14682
diff changeset
83 ARRAY(union mail_index_transaction_module_context *) module_contexts;
4453
85fcdb478608 Beginnings of joining mail-storage API more closely to mail-index, so that
Timo Sirainen <timo.sirainen@movial.fi>
parents: 4451
diff changeset
84
2884
173a0296e81d Update view's header only after syncing the view. This and other changes fix
Timo Sirainen <tss@iki.fi>
parents: 2877
diff changeset
85 unsigned int no_appends:1;
5849
a9df50952600 Added support for resetting index.
Timo Sirainen <tss@iki.fi>
parents: 5453
diff changeset
86
8947
e892aa297b85 indexes: Fixes to handling shrinking tail offsets.
Timo Sirainen <tss@iki.fi>
parents: 8945
diff changeset
87 unsigned int sync_transaction:1;
3760
cd2d1de1255f Allow appending mails in wrong UID order. Sort them internally when
Timo Sirainen <tss@iki.fi>
parents: 3322
diff changeset
88 unsigned int appends_nonsorted:1;
9624
2558ba736207 Keep track of expunged messages' GUIDs and expose them via mailbox_get_expunges().
Timo Sirainen <tss@iki.fi>
parents: 9622
diff changeset
89 unsigned int expunges_nonsorted:1;
9616
1f8629349b41 mail_index_update_flags*() now does a better job of merging flag changes together.
Timo Sirainen <tss@iki.fi>
parents: 9612
diff changeset
90 unsigned int drop_unnecessary_flag_updates:1;
3322
49071cc19102 If UIDVALIDITY changes, don't invalidate the whole index. Just expunge all
Timo Sirainen <tss@iki.fi>
parents: 3254
diff changeset
91 unsigned int pre_hdr_changed:1;
49071cc19102 If UIDVALIDITY changes, don't invalidate the whole index. Just expunge all
Timo Sirainen <tss@iki.fi>
parents: 3254
diff changeset
92 unsigned int post_hdr_changed:1;
5849
a9df50952600 Added support for resetting index.
Timo Sirainen <tss@iki.fi>
parents: 5453
diff changeset
93 unsigned int reset:1;
10655
fc0ac73f0b36 Added support for marking mailbox index deleted. Don't allow any changes after that.
Timo Sirainen <tss@iki.fi>
parents: 10367
diff changeset
94 unsigned int index_deleted:1;
10674
22354f505277 lib-index: Added support for undeleting a deleted index.
Timo Sirainen <tss@iki.fi>
parents: 10655
diff changeset
95 unsigned int index_undeleted:1;
13188
6db2f76bc493 lib-index: MAIL_INDEX_SYNC_FLAG_DELETING_INDEX now allows committing changes to deleted index.
Timo Sirainen <tss@iki.fi>
parents: 12251
diff changeset
96 unsigned int commit_deleted_index:1;
17609
16d4cf2c0d65 lib-index: Don't update log_file_tail_offset unnecessarily.
Timo Sirainen <tss@iki.fi>
parents: 17108
diff changeset
97 unsigned int tail_offset_changed:1;
6093
76da3b271bcf Keep flag updates separately from transaction.log_updates flag, because the
Timo Sirainen <tss@iki.fi>
parents: 6089
diff changeset
98 /* non-extension updates. flag updates don't change this because
76da3b271bcf Keep flag updates separately from transaction.log_updates flag, because the
Timo Sirainen <tss@iki.fi>
parents: 6089
diff changeset
99 they may be added and removed, so be sure to check that the updates
76da3b271bcf Keep flag updates separately from transaction.log_updates flag, because the
Timo Sirainen <tss@iki.fi>
parents: 6089
diff changeset
100 array is non-empty also. */
2615
4448b82016bb We didn't include extra_rec_updates at checking if transaction had changed
Timo Sirainen <tss@iki.fi>
parents: 2563
diff changeset
101 unsigned int log_updates:1;
5999
5b4bf289b98d If mail_index_ext_set_reset_id() is called, the transaction may go back to
Timo Sirainen <tss@iki.fi>
parents: 5946
diff changeset
102 /* extension updates */
5b4bf289b98d If mail_index_ext_set_reset_id() is called, the transaction may go back to
Timo Sirainen <tss@iki.fi>
parents: 5946
diff changeset
103 unsigned int log_ext_updates:1;
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
104 };
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
105
9252
937dca181d77 Moved transaction commiting code to mail-index-transaction-*.c
Timo Sirainen <tss@iki.fi>
parents: 9001
diff changeset
106 #define MAIL_INDEX_TRANSACTION_HAS_CHANGES(t) \
937dca181d77 Moved transaction commiting code to mail-index-transaction-*.c
Timo Sirainen <tss@iki.fi>
parents: 9001
diff changeset
107 ((t)->log_updates || (t)->log_ext_updates || \
10674
22354f505277 lib-index: Added support for undeleting a deleted index.
Timo Sirainen <tss@iki.fi>
parents: 10655
diff changeset
108 (array_is_created(&(t)->updates) && array_count(&(t)->updates) > 0) || \
22354f505277 lib-index: Added support for undeleting a deleted index.
Timo Sirainen <tss@iki.fi>
parents: 10655
diff changeset
109 (t)->index_deleted || (t)->index_undeleted)
9252
937dca181d77 Moved transaction commiting code to mail-index-transaction-*.c
Timo Sirainen <tss@iki.fi>
parents: 9001
diff changeset
110
21655
cb11cca4eaee lib-index: Allow multiple hooks for transaction creation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 21570
diff changeset
111 typedef void hook_mail_index_transaction_created_t(struct mail_index_transaction *t);
cb11cca4eaee lib-index: Allow multiple hooks for transaction creation
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 21570
diff changeset
112
21658
bd1d7007cb01 lib-index: Unconstifty pointer array
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 21657
diff changeset
113 void mail_index_transaction_hook_register(hook_mail_index_transaction_created_t *hook);
bd1d7007cb01 lib-index: Unconstifty pointer array
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 21657
diff changeset
114 void mail_index_transaction_hook_unregister(hook_mail_index_transaction_created_t *hook);
4453
85fcdb478608 Beginnings of joining mail-storage API more closely to mail-index, so that
Timo Sirainen <timo.sirainen@movial.fi>
parents: 4451
diff changeset
115
2224
a816e2d88406 Added mail_index_transaction_get_updated_view() which can be used to access
Timo Sirainen <tss@iki.fi>
parents: 2201
diff changeset
116 struct mail_index_record *
a816e2d88406 Added mail_index_transaction_get_updated_view() which can be used to access
Timo Sirainen <tss@iki.fi>
parents: 2201
diff changeset
117 mail_index_transaction_lookup(struct mail_index_transaction *t, uint32_t seq);
a816e2d88406 Added mail_index_transaction_get_updated_view() which can be used to access
Timo Sirainen <tss@iki.fi>
parents: 2201
diff changeset
118
2271
15d959d262a4 UIDs for appended messages can now be assigned all at once. Maildir now
Timo Sirainen <tss@iki.fi>
parents: 2240
diff changeset
119 void mail_index_transaction_ref(struct mail_index_transaction *t);
3879
928229f8b3e6 deinit, unref, destroy, close, free, etc. functions now take a pointer to
Timo Sirainen <tss@iki.fi>
parents: 3863
diff changeset
120 void mail_index_transaction_unref(struct mail_index_transaction **t);
9622
cae78e734cdb Moved around mail-index-transaction code and added initial unit tests.
Timo Sirainen <tss@iki.fi>
parents: 9616
diff changeset
121 void mail_index_transaction_reset_v(struct mail_index_transaction *t);
2271
15d959d262a4 UIDs for appended messages can now be assigned all at once. Maildir now
Timo Sirainen <tss@iki.fi>
parents: 2240
diff changeset
122
5228
3bccf203fa91 When adding mails to index in non-sorted UID order and then using
Timo Sirainen <tss@iki.fi>
parents: 4678
diff changeset
123 void mail_index_transaction_sort_appends(struct mail_index_transaction *t);
9624
2558ba736207 Keep track of expunged messages' GUIDs and expose them via mailbox_get_expunges().
Timo Sirainen <tss@iki.fi>
parents: 9622
diff changeset
124 void mail_index_transaction_sort_expunges(struct mail_index_transaction *t);
6037
d911d943438e Recent flag handling rewrite. Still not perfect with maildir.
Timo Sirainen <tss@iki.fi>
parents: 5999
diff changeset
125 uint32_t mail_index_transaction_get_next_uid(struct mail_index_transaction *t);
9252
937dca181d77 Moved transaction commiting code to mail-index-transaction-*.c
Timo Sirainen <tss@iki.fi>
parents: 9001
diff changeset
126 void mail_index_transaction_set_log_updates(struct mail_index_transaction *t);
21570
d1860907acf9 lib-index: Add day_stamp parameter to mail_index_update_day_headers()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21146
diff changeset
127 void mail_index_update_day_headers(struct mail_index_transaction *t, time_t day_stamp);
5228
3bccf203fa91 When adding mails to index in non-sorted UID order and then using
Timo Sirainen <tss@iki.fi>
parents: 4678
diff changeset
128
8549
7b16388a3bb0 mail_get_flags/keywords() now returns updated values if they've been changed within transaction.
Timo Sirainen <tss@iki.fi>
parents: 7913
diff changeset
129 unsigned int
7b16388a3bb0 mail_get_flags/keywords() now returns updated values if they've been changed within transaction.
Timo Sirainen <tss@iki.fi>
parents: 7913
diff changeset
130 mail_index_transaction_get_flag_update_pos(struct mail_index_transaction *t,
7b16388a3bb0 mail_get_flags/keywords() now returns updated values if they've been changed within transaction.
Timo Sirainen <tss@iki.fi>
parents: 7913
diff changeset
131 unsigned int left_idx,
7b16388a3bb0 mail_get_flags/keywords() now returns updated values if they've been changed within transaction.
Timo Sirainen <tss@iki.fi>
parents: 7913
diff changeset
132 unsigned int right_idx,
7b16388a3bb0 mail_get_flags/keywords() now returns updated values if they've been changed within transaction.
Timo Sirainen <tss@iki.fi>
parents: 7913
diff changeset
133 uint32_t seq);
14532
5d45870e2e4a lib-index: Fixed MAIL_INDEX_SYNC_FLAG_AVOID_FLAG_UPDATES with concurrent keyword changes.
Timo Sirainen <tss@iki.fi>
parents: 13188
diff changeset
134 void mail_index_transaction_lookup_latest_keywords(struct mail_index_transaction *t,
5d45870e2e4a lib-index: Fixed MAIL_INDEX_SYNC_FLAG_AVOID_FLAG_UPDATES with concurrent keyword changes.
Timo Sirainen <tss@iki.fi>
parents: 13188
diff changeset
135 uint32_t seq,
5d45870e2e4a lib-index: Fixed MAIL_INDEX_SYNC_FLAG_AVOID_FLAG_UPDATES with concurrent keyword changes.
Timo Sirainen <tss@iki.fi>
parents: 13188
diff changeset
136 ARRAY_TYPE(keyword_indexes) *keywords);
8549
7b16388a3bb0 mail_get_flags/keywords() now returns updated values if they've been changed within transaction.
Timo Sirainen <tss@iki.fi>
parents: 7913
diff changeset
137
9626
b45be8d8b388 mail index transactions: More code cleanups and unit tests.
Timo Sirainen <tss@iki.fi>
parents: 9624
diff changeset
138 bool mail_index_cancel_flag_updates(struct mail_index_transaction *t,
b45be8d8b388 mail index transactions: More code cleanups and unit tests.
Timo Sirainen <tss@iki.fi>
parents: 9624
diff changeset
139 uint32_t seq);
b45be8d8b388 mail index transactions: More code cleanups and unit tests.
Timo Sirainen <tss@iki.fi>
parents: 9624
diff changeset
140 bool mail_index_cancel_keyword_updates(struct mail_index_transaction *t,
b45be8d8b388 mail index transactions: More code cleanups and unit tests.
Timo Sirainen <tss@iki.fi>
parents: 9624
diff changeset
141 uint32_t seq);
b45be8d8b388 mail index transactions: More code cleanups and unit tests.
Timo Sirainen <tss@iki.fi>
parents: 9624
diff changeset
142
21146
52a7790352e8 lib-index: Added mail_index_transaction_get_highest_modseq()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21145
diff changeset
143 /* As input the array's each element starts with struct seq_range where
52a7790352e8 lib-index: Added mail_index_transaction_get_highest_modseq()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21145
diff changeset
144 uid1..uid2 are actually sequences within the transaction view. This function
52a7790352e8 lib-index: Added mail_index_transaction_get_highest_modseq()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21145
diff changeset
145 changes the sequences into UIDs. If the transaction has any appends, they
52a7790352e8 lib-index: Added mail_index_transaction_get_highest_modseq()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21145
diff changeset
146 must have already been assigned UIDs. */
52a7790352e8 lib-index: Added mail_index_transaction_get_highest_modseq()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21145
diff changeset
147 void mail_index_transaction_seq_range_to_uid(struct mail_index_transaction *t,
52a7790352e8 lib-index: Added mail_index_transaction_get_highest_modseq()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21145
diff changeset
148 ARRAY_TYPE(seq_range) *array);
21145
e39b12e1b321 lib-index: Added internal mail_index_transaction_finish_so_far()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 17609
diff changeset
149 void mail_index_transaction_finish_so_far(struct mail_index_transaction *t);
12251
ab2222fd3f5d lib-index: Always update index map while committing a transaction.
Timo Sirainen <tss@iki.fi>
parents: 12250
diff changeset
150 void mail_index_transaction_finish(struct mail_index_transaction *t);
9252
937dca181d77 Moved transaction commiting code to mail-index-transaction-*.c
Timo Sirainen <tss@iki.fi>
parents: 9001
diff changeset
151 void mail_index_transaction_export(struct mail_index_transaction *t,
937dca181d77 Moved transaction commiting code to mail-index-transaction-*.c
Timo Sirainen <tss@iki.fi>
parents: 9001
diff changeset
152 struct mail_transaction_log_append_ctx *append_ctx);
9624
2558ba736207 Keep track of expunged messages' GUIDs and expose them via mailbox_get_expunges().
Timo Sirainen <tss@iki.fi>
parents: 9622
diff changeset
153 int mail_transaction_expunge_guid_cmp(const struct mail_transaction_expunge_guid *e1,
2558ba736207 Keep track of expunged messages' GUIDs and expose them via mailbox_get_expunges().
Timo Sirainen <tss@iki.fi>
parents: 9622
diff changeset
154 const struct mail_transaction_expunge_guid *e2);
9622
cae78e734cdb Moved around mail-index-transaction code and added initial unit tests.
Timo Sirainen <tss@iki.fi>
parents: 9616
diff changeset
155 unsigned int
cae78e734cdb Moved around mail-index-transaction code and added initial unit tests.
Timo Sirainen <tss@iki.fi>
parents: 9616
diff changeset
156 mail_index_transaction_get_flag_update_pos(struct mail_index_transaction *t,
cae78e734cdb Moved around mail-index-transaction code and added initial unit tests.
Timo Sirainen <tss@iki.fi>
parents: 9616
diff changeset
157 unsigned int left_idx,
cae78e734cdb Moved around mail-index-transaction code and added initial unit tests.
Timo Sirainen <tss@iki.fi>
parents: 9616
diff changeset
158 unsigned int right_idx,
cae78e734cdb Moved around mail-index-transaction code and added initial unit tests.
Timo Sirainen <tss@iki.fi>
parents: 9616
diff changeset
159 uint32_t seq);
2563
5752e5ac88f0 Save extra record/header infos into index file permanently.
Timo Sirainen <tss@iki.fi>
parents: 2282
diff changeset
160
14682
d0d7b810646b Make sure we check all the functions' return values. Minor API changes to simplify this.
Timo Sirainen <tss@iki.fi>
parents: 14599
diff changeset
161 void mail_index_ext_using_reset_id(struct mail_index_transaction *t,
12250
d0ddc30f0eef lib-index: Cache offsets were sometimes written pointing to an older cache file.
Timo Sirainen <tss@iki.fi>
parents: 11665
diff changeset
162 uint32_t ext_id, uint32_t reset_id);
d0ddc30f0eef lib-index: Cache offsets were sometimes written pointing to an older cache file.
Timo Sirainen <tss@iki.fi>
parents: 11665
diff changeset
163
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
164 #endif