mail-index-transaction-private.h revision bb10ebcf076c959c752f583746d83805d7686df8
e59faf65ce864fe95dc00f5d52b8323cdbd0608aTimo Sirainen#ifndef __MAIL_INDEX_TRANSACTION_PRIVATE_H
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen#define __MAIL_INDEX_TRANSACTION_PRIVATE_H
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen#include "mail-transaction-log.h"
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen
d39a04db2f4d0599cb9b5f03a9aa10a3c234453cTimo Sirainenstruct mail_index_transaction_keyword_update {
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen array_t ARRAY_DEFINE(add_seq, uint32_t);
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen array_t ARRAY_DEFINE(remove_seq, uint32_t);
a3fe8c0c54d87822f4b4f8f0d10caac611861b2bTimo Sirainen};
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainenstruct mail_index_transaction {
c99fe55d4535d839a6ad0735c4719e076a1adb2cTimo Sirainen int refcount;
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen struct mail_index_view *view;
7891c8e6debdcfec552cb1beea2a0230fe89957bTimo Sirainen
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen array_t ARRAY_DEFINE(appends, struct mail_index_record);
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen uint32_t first_new_seq, last_new_seq;
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen array_t ARRAY_DEFINE(expunges, struct mail_transaction_expunge);
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen array_t ARRAY_DEFINE(updates, struct mail_transaction_flag_update);
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen size_t last_update_idx;
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen unsigned char hdr_change[sizeof(struct mail_index_header)];
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen unsigned char hdr_mask[sizeof(struct mail_index_header)];
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen array_t ARRAY_DEFINE(ext_rec_updates, array_t);
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen array_t ARRAY_DEFINE(ext_resizes, struct mail_transaction_ext_intro);
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen array_t ARRAY_DEFINE(ext_resets, uint32_t);
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen array_t ARRAY_DEFINE(keyword_updates,
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen struct mail_index_transaction_keyword_update);
cf0ad1a0bddb0787f3d7b408a96d721a8b2a98a3Timo Sirainen array_t ARRAY_DEFINE(keyword_resets, struct seq_range);
cf0ad1a0bddb0787f3d7b408a96d721a8b2a98a3Timo Sirainen
cf0ad1a0bddb0787f3d7b408a96d721a8b2a98a3Timo Sirainen struct mail_cache_transaction_ctx *cache_trans_ctx;
cf0ad1a0bddb0787f3d7b408a96d721a8b2a98a3Timo Sirainen
cf0ad1a0bddb0787f3d7b408a96d721a8b2a98a3Timo Sirainen unsigned int hide_transaction:1;
86791365b10f45982c88e70f2eb94fd6c3fea151Timo Sirainen unsigned int no_appends:1;
86791365b10f45982c88e70f2eb94fd6c3fea151Timo Sirainen unsigned int external:1;
86791365b10f45982c88e70f2eb94fd6c3fea151Timo Sirainen unsigned int hdr_changed:1;
86791365b10f45982c88e70f2eb94fd6c3fea151Timo Sirainen unsigned int log_updates:1;
4d4d6d4745682790c20d759ba93dbea46b812c5dTimo Sirainen};
4d4d6d4745682790c20d759ba93dbea46b812c5dTimo Sirainen
bd20ef9d5c639faf470912ab94e6e6627d3eaebaTimo Sirainenstruct mail_index_record *
cf0ad1a0bddb0787f3d7b408a96d721a8b2a98a3Timo Sirainenmail_index_transaction_lookup(struct mail_index_transaction *t, uint32_t seq);
d176f84ce5ca2073f4dfbafb457b9c74f6bf0d76Timo Sirainen
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainenvoid mail_index_transaction_ref(struct mail_index_transaction *t);
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainenvoid mail_index_transaction_unref(struct mail_index_transaction *t);
17fe695b985e9d6e9dc39c05b24e6b3c3b7e1ba1Timo Sirainen
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainenint mail_index_seq_array_lookup(const array_t *buffer, uint32_t seq,
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen unsigned int *idx_r);
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen#endif
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen