mail-index-transaction-private.h revision 515f81466f673c1b4f72e053f1a9686e6fca6b61
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,
515f81466f673c1b4f72e053f1a9686e6fca6b61Timo Sirainenvoid mail_index_transaction_lookup_latest_keywords(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,