mail-index-transaction-private.h revision 6a0855a04d75bce3c0a2f68517d02f86ae72087f
#ifndef MAIL_INDEX_TRANSACTION_PRIVATE_H
#define MAIL_INDEX_TRANSACTION_PRIVATE_H
#include "seq-range-array.h"
#include "mail-transaction-log.h"
};
/* mask is in bytes, not bits */
unsigned char *mask;
unsigned char *data;
};
struct mail_index_transaction_vfuncs {
void (*reset)(struct mail_index_transaction *t);
int (*commit)(struct mail_index_transaction *t,
struct mail_index_transaction_commit_result *result_r);
void (*rollback)(struct mail_index_transaction *t);
};
struct mail_index_transaction_vfuncs super;
struct mail_index_module_register *reg;
};
struct mail_index_flag_update {
};
struct mail_index_transaction {
int refcount;
struct mail_index_transaction_vfuncs v, *vlast;
struct mail_index_view *view;
struct mail_index_view *latest_view;
/* NOTE: If you add anything new, remember to update
mail_index_transaction_reset_v() to reset it. */
unsigned char pre_hdr_change[sizeof(struct mail_index_header)];
unsigned char pre_hdr_mask[sizeof(struct mail_index_header)];
unsigned char post_hdr_change[sizeof(struct mail_index_header)];
unsigned char post_hdr_mask[sizeof(struct mail_index_header)];
/* Module-specific contexts. */
bool no_appends:1;
bool sync_transaction:1;
bool appends_nonsorted:1;
bool expunges_nonsorted:1;
bool drop_unnecessary_flag_updates:1;
bool pre_hdr_changed:1;
bool post_hdr_changed:1;
bool reset:1;
bool index_deleted:1;
bool index_undeleted:1;
bool commit_deleted_index:1;
bool tail_offset_changed:1;
/* non-extension updates. flag updates don't change this because
they may be added and removed, so be sure to check that the updates
array is non-empty also. */
bool log_updates:1;
/* extension updates */
bool log_ext_updates:1;
};
#define MAIL_INDEX_TRANSACTION_HAS_CHANGES(t) \
((t)->log_updates || (t)->log_ext_updates || \
(t)->index_deleted || (t)->index_undeleted)
typedef void hook_mail_index_transaction_created_t(struct mail_index_transaction *t);
struct mail_index_record *
void mail_index_transaction_ref(struct mail_index_transaction *t);
void mail_index_transaction_unref(struct mail_index_transaction **t);
void mail_index_transaction_reset_v(struct mail_index_transaction *t);
void mail_index_transaction_sort_appends(struct mail_index_transaction *t);
void mail_index_transaction_sort_expunges(struct mail_index_transaction *t);
void mail_index_transaction_set_log_updates(struct mail_index_transaction *t);
unsigned int
unsigned int left_idx,
unsigned int right_idx,
void mail_index_transaction_lookup_latest_keywords(struct mail_index_transaction *t,
bool mail_index_cancel_flag_updates(struct mail_index_transaction *t,
bool mail_index_cancel_keyword_updates(struct mail_index_transaction *t,
/* As input the array's each element starts with struct seq_range where
uid1..uid2 are actually sequences within the transaction view. This function
changes the sequences into UIDs. If the transaction has any appends, they
must have already been assigned UIDs. */
void mail_index_transaction_seq_range_to_uid(struct mail_index_transaction *t,
void mail_index_transaction_finish_so_far(struct mail_index_transaction *t);
void mail_index_transaction_finish(struct mail_index_transaction *t);
void mail_index_transaction_export(struct mail_index_transaction *t,
const struct mail_transaction_expunge_guid *e2);
unsigned int
unsigned int left_idx,
unsigned int right_idx,
void mail_index_ext_using_reset_id(struct mail_index_transaction *t,
#endif