cydir-storage.h revision ccc895c0358108d2304239063e940b7d75f364ab
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen#ifndef __CYDIR_STORAGE_H
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen#define __CYDIR_STORAGE_H
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen#include "index-storage.h"
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen#include "mailbox-list-private.h"
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen#define CYDIR_STORAGE_NAME "cydir"
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen#define CYDIR_SUBSCRIPTION_FILE_NAME "subscriptions."
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen#define CYDIR_INDEX_PREFIX "dovecot.index"
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen#define STORAGE(mbox_storage) \
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen (&(mbox_storage)->storage.storage)
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen#define INDEX_STORAGE(mbox_storage) \
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen (&(mbox_storage)->storage)
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenstruct cydir_storage {
ccc895c0358108d2304239063e940b7d75f364abTimo Sirainen struct mail_storage storage;
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen union mailbox_list_module_context list_module_ctx;
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen};
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenstruct cydir_mailbox {
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen struct index_mailbox ibox;
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen struct cydir_storage *storage;
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen const char *path;
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen};
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenstruct cydir_transaction_context {
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen struct index_transaction_context ictx;
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen union mail_index_transaction_module_context module_ctx;
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen uint32_t first_saved_mail_seq;
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen struct cydir_save_context *save_ctx;
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen};
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenextern struct mail_vfuncs cydir_mail_vfuncs;
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenvoid cydir_transaction_created(struct mail_index_transaction *t);
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenvoid cydir_transaction_class_init(void);
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenvoid cydir_transaction_class_deinit(void);
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenint cydir_save_init(struct mailbox_transaction_context *_t,
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen enum mail_flags flags, struct mail_keywords *keywords,
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen time_t received_date, int timezone_offset,
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen const char *from_envelope, struct istream *input,
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen struct mail *dest_mail, struct mail_save_context **ctx_r);
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenint cydir_save_continue(struct mail_save_context *ctx);
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenint cydir_save_finish(struct mail_save_context *ctx);
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenvoid cydir_save_cancel(struct mail_save_context *ctx);
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenint cydir_transaction_save_commit_pre(struct cydir_save_context *ctx);
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenvoid cydir_transaction_save_commit_post(struct cydir_save_context *ctx);
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenvoid cydir_transaction_save_rollback(struct cydir_save_context *ctx);
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen#endif