mail-index-transaction-private.h revision 5e40ed3f0a2c2acddc9b8eab59670c7a850114c5
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,
d6badc27cd6e8d3398877b6766cb0aaeef3a7800Timo Sirainen uint32_t *log_file_seq_r, uoff_t *log_file_offset_r);
d6badc27cd6e8d3398877b6766cb0aaeef3a7800Timo Sirainen void (*rollback)(struct mail_index_transaction *t);
ae8817f05005f57bba32479a610b52d083e2b6ebTimo Sirainen /* NOTE: If you add anything new, remember to update
ae8817f05005f57bba32479a610b52d083e2b6ebTimo Sirainen mail_index_transaction_reset() 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;
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 || \
1279090ba03f9c176976a69ab7718f0ed77b19afTimo 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);
985fa802913c96ce6f2e25bbc788ee39c416a7e0Timo Sirainenvoid mail_index_transaction_sort_appends(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);
3fe9483b2b412a14493e3120751b0e99ecfe9388Timo Sirainenmail_index_transaction_get_flag_update_pos(struct mail_index_transaction *t,
8d80659e504ffb34bb0c6a633184fece35751b18Timo Sirainenbool mail_index_seq_array_lookup(const ARRAY_TYPE(seq_array) *array,
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainenbool mail_index_seq_array_add(ARRAY_TYPE(seq_array) *array, uint32_t seq,
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainenint mail_index_transaction_finish(struct mail_index_transaction *t);
1279090ba03f9c176976a69ab7718f0ed77b19afTimo Sirainenvoid mail_index_transaction_export(struct mail_index_transaction *t,