Mercurial > dovecot > core-2.2
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 |
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 |