mail-index-transaction-private.h revision 491178793199e62320f7bc6292e7b8fd843ae5bc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
c5794838af9995f50bfecb06a3cd4f9a0ac77858Timo SirainenARRAY_DEFINE_TYPE(seq_array_array, ARRAY_TYPE(seq_array));
81a5d8714c566ce50c4a2409f59e82e716d576d2Timo Sirainen /* mask is in bytes, not bits */
81a5d8714c566ce50c4a2409f59e82e716d576d2Timo Sirainen unsigned char *mask;
81a5d8714c566ce50c4a2409f59e82e716d576d2Timo Sirainen unsigned char *data;
5e40ed3f0a2c2acddc9b8eab59670c7a850114c5Timo Sirainen void (*reset)(struct mail_index_transaction *t);
d6badc27cd6e8d3398877b6766cb0aaeef3a7800Timo Sirainen int (*commit)(struct mail_index_transaction *t,
9f19a50d5966643c4d1c5ca06868ac2ad31bc4d5Timo Sirainen struct mail_index_transaction_commit_result *result_r);
d6badc27cd6e8d3398877b6766cb0aaeef3a7800Timo Sirainen void (*rollback)(struct mail_index_transaction *t);
ae8817f05005f57bba32479a610b52d083e2b6ebTimo Sirainen /* NOTE: If you add anything new, remember to update
0c909e3461607eadcd66f4eac69b7f34e37fccf1Timo Sirainen mail_index_transaction_reset_v() to reset it. */
8d80659e504ffb34bb0c6a633184fece35751b18Timo Sirainen ARRAY_DEFINE(appends, struct mail_index_record);
48270badadd82279bfe50ae3d187aea8b0b2b30eTimo Sirainen /* lowest/highest sequence that updates flags/keywords */
48270badadd82279bfe50ae3d187aea8b0b2b30eTimo Sirainen uint32_t min_flagupdate_seq, max_flagupdate_seq;
ad48319996942463675b53877092ab7e13a7a75aTimo Sirainen ARRAY_DEFINE(modseq_updates, struct mail_transaction_modseq_update);
0c909e3461607eadcd66f4eac69b7f34e37fccf1Timo Sirainen ARRAY_DEFINE(expunges, struct mail_transaction_expunge_guid);
8d80659e504ffb34bb0c6a633184fece35751b18Timo Sirainen ARRAY_DEFINE(updates, struct mail_transaction_flag_update);
aa38d1a0945f0bc13a225d043f53fad2eec666b1Timo Sirainen unsigned char pre_hdr_change[sizeof(struct mail_index_header)];
aa38d1a0945f0bc13a225d043f53fad2eec666b1Timo Sirainen unsigned char pre_hdr_mask[sizeof(struct mail_index_header)];
aa38d1a0945f0bc13a225d043f53fad2eec666b1Timo Sirainen unsigned char post_hdr_change[sizeof(struct mail_index_header)];
aa38d1a0945f0bc13a225d043f53fad2eec666b1Timo Sirainen unsigned char post_hdr_mask[sizeof(struct mail_index_header)];
81a5d8714c566ce50c4a2409f59e82e716d576d2Timo Sirainen struct mail_index_transaction_ext_hdr_update);
8d80659e504ffb34bb0c6a633184fece35751b18Timo Sirainen ARRAY_DEFINE(ext_resizes, struct mail_transaction_ext_intro);
6e07b4251bf6a3cf34019c351a32a65c08392e58Timo Sirainen ARRAY_DEFINE(ext_resets, struct mail_transaction_ext_reset);
8d80659e504ffb34bb0c6a633184fece35751b18Timo Sirainen struct mail_index_transaction_keyword_update);
46c31f64b9f0949f00b7819f45b22f2d64b2ea27Timo Sirainen /* Module-specific contexts. */
46c31f64b9f0949f00b7819f45b22f2d64b2ea27Timo Sirainen union mail_index_transaction_module_context *);
a022088674a5ae72ed29ae001834cbad62a4f19fTimo Sirainen /* non-extension updates. flag updates don't change this because
a022088674a5ae72ed29ae001834cbad62a4f19fTimo Sirainen they may be added and removed, so be sure to check that the updates
a022088674a5ae72ed29ae001834cbad62a4f19fTimo Sirainen array is non-empty also. */
a2cbf1d392ee983520451bc9b849a490f28ac298Timo Sirainen /* extension updates */
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen#define MAIL_INDEX_TRANSACTION_HAS_CHANGES(t) \
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen ((t)->log_updates || (t)->log_ext_updates || \
8872e5c991430f96138a46e36b7f3c2c40d8e5c2Timo Sirainen (array_is_created(&(t)->updates) && array_count(&(t)->updates) > 0) || \
d6badc27cd6e8d3398877b6766cb0aaeef3a7800Timo Sirainenextern void (*hook_mail_index_transaction_created)
24fc71a693331ffe77e2b6d81c70aca6fa055e47Timo Sirainenmail_index_transaction_lookup(struct mail_index_transaction *t, uint32_t seq);
09c3a491f4f6ccebe290c7709bdc0d79a187610bTimo Sirainenvoid mail_index_transaction_ref(struct mail_index_transaction *t);
d5cebe7f98e63d4e2822863ef2faa4971e8b3a5dTimo Sirainenvoid mail_index_transaction_unref(struct mail_index_transaction **t);
b346610430690398b8c840006004a2df4aa8ce92Timo Sirainenvoid mail_index_transaction_reset_v(struct mail_index_transaction *t);
985fa802913c96ce6f2e25bbc788ee39c416a7e0Timo Sirainenvoid mail_index_transaction_sort_appends(struct mail_index_transaction *t);
0c909e3461607eadcd66f4eac69b7f34e37fccf1Timo Sirainenvoid mail_index_transaction_sort_expunges(struct mail_index_transaction *t);
1d3f7c1278168d5b1cbfa9a2cc9929a0909056b4Timo Sirainenuint32_t mail_index_transaction_get_next_uid(struct mail_index_transaction *t);
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainenvoid mail_index_transaction_set_log_updates(struct mail_index_transaction *t);
b346610430690398b8c840006004a2df4aa8ce92Timo Sirainenvoid mail_index_update_day_headers(struct mail_index_transaction *t);
3fe9483b2b412a14493e3120751b0e99ecfe9388Timo Sirainenmail_index_transaction_get_flag_update_pos(struct mail_index_transaction *t,
02bb8313a711dfe50c7f01e8132e13ca93ecfb42Timo Sirainenbool mail_index_cancel_flag_updates(struct mail_index_transaction *t,
02bb8313a711dfe50c7f01e8132e13ca93ecfb42Timo Sirainenbool mail_index_cancel_keyword_updates(struct mail_index_transaction *t,
5e88e4624aa6d482b5b195acd2f4e02aeb385f20Timo Sirainenvoid mail_index_transaction_finish(struct mail_index_transaction *t);
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainenvoid mail_index_transaction_export(struct mail_index_transaction *t,
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainen struct mail_transaction_log_append_ctx *append_ctx);
0c909e3461607eadcd66f4eac69b7f34e37fccf1Timo Sirainenint mail_transaction_expunge_guid_cmp(const struct mail_transaction_expunge_guid *e1,
0c909e3461607eadcd66f4eac69b7f34e37fccf1Timo Sirainen const struct mail_transaction_expunge_guid *e2);
b346610430690398b8c840006004a2df4aa8ce92Timo Sirainenmail_index_transaction_get_flag_update_pos(struct mail_index_transaction *t,