index-storage.h revision 1138ef5e898296a167d1904e825ee654ee421591
5a580c3a38ced62d4bcc95b8ac7c4f2935b5d294Timo Sirainen#ifndef __INDEX_STORAGE_H
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainen#define __INDEX_STORAGE_H
46552a931924c2d743f045e95b08c3ce6beda91aTimo Sirainen
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainen#include "mail-storage.h"
f30577ff7cf29858f1878abe963b4f40a436434fTimo Sirainen#include "mail-index.h"
f30577ff7cf29858f1878abe963b4f40a436434fTimo Sirainen#include "imap-message-cache.h"
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainen
f30577ff7cf29858f1878abe963b4f40a436434fTimo Sirainentypedef struct _IndexMailbox IndexMailbox;
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainen
45155bb1250cf5a120278f349465aded513a100fTimo Sirainenstruct _IndexMailbox {
1093de32efb2a231949566d4bd8aa55a8f43fb70Timo Sirainen Mailbox box;
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainen
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainen /* expunge messages marked as deleted, requires index to be
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainen exclusively locked */
e248fe370c4047cee921a91b48edc37944ab0526Timo Sirainen int (*expunge_locked)(IndexMailbox *ibox, int notify);
8372fc7efb6d64dff2e5f55fb4a3822c56869cfeTimo Sirainen
8372fc7efb6d64dff2e5f55fb4a3822c56869cfeTimo Sirainen MailboxSyncCallbacks sync_callbacks;
8372fc7efb6d64dff2e5f55fb4a3822c56869cfeTimo Sirainen void *sync_context;
8372fc7efb6d64dff2e5f55fb4a3822c56869cfeTimo Sirainen
8372fc7efb6d64dff2e5f55fb4a3822c56869cfeTimo Sirainen MailIndex *index;
8372fc7efb6d64dff2e5f55fb4a3822c56869cfeTimo Sirainen ImapMessageCache *cache;
8372fc7efb6d64dff2e5f55fb4a3822c56869cfeTimo Sirainen unsigned int synced_messages_count;
8372fc7efb6d64dff2e5f55fb4a3822c56869cfeTimo Sirainen
1093de32efb2a231949566d4bd8aa55a8f43fb70Timo Sirainen unsigned int sent_diskspace_warning:1;
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainen};
1093de32efb2a231949566d4bd8aa55a8f43fb70Timo Sirainen
1093de32efb2a231949566d4bd8aa55a8f43fb70Timo Sirainenextern ImapMessageCacheIface index_msgcache_iface;
1093de32efb2a231949566d4bd8aa55a8f43fb70Timo Sirainen
1093de32efb2a231949566d4bd8aa55a8f43fb70Timo Sirainenint mail_storage_set_index_error(IndexMailbox *ibox);
b8cd2f2f99351605725b7260f5da89cff76d0a3aTimo Sirainen
f30577ff7cf29858f1878abe963b4f40a436434fTimo Sirainenvoid index_storage_add(MailIndex *index);
9508ac436fff0e1dcea975855c139cd251deb703Timo SirainenMailIndex *index_storage_lookup_ref(const char *path);
01cd9d4a8050a1dbf1da2c830f9755a45d6d004aTimo Sirainenvoid index_storage_unref(MailIndex *index);
01cd9d4a8050a1dbf1da2c830f9755a45d6d004aTimo Sirainen
e2a88d59c0d47d63ce1ad5b1fd95e487124a3fd4Timo SirainenIndexMailbox *index_storage_init(MailStorage *storage, Mailbox *box,
ed16ab579bd058ec5e2b5d02bb41fdadd9e05b31Timo Sirainen MailIndex *index, const char *name,
01cd9d4a8050a1dbf1da2c830f9755a45d6d004aTimo Sirainen int readonly, int fast);
ddbdc644a15f56f4b43596f1b8c0fc196c101445Timo Sirainenvoid index_storage_close(Mailbox *box);
ed16ab579bd058ec5e2b5d02bb41fdadd9e05b31Timo Sirainen
ddbdc644a15f56f4b43596f1b8c0fc196c101445Timo Sirainenint index_storage_sync_index_if_possible(IndexMailbox *ibox, int sync_size);
ab45534d66792946b5794ab99a843d2f2b1d556fTimo Sirainenint index_storage_sync_modifylog(IndexMailbox *ibox, int hide_deleted);
ab45534d66792946b5794ab99a843d2f2b1d556fTimo Sirainen
ab45534d66792946b5794ab99a843d2f2b1d556fTimo Sirainenint index_mailbox_fix_custom_flags(IndexMailbox *ibox, MailFlags *flags,
01cd9d4a8050a1dbf1da2c830f9755a45d6d004aTimo Sirainen const char *custom_flags[]);
01cd9d4a8050a1dbf1da2c830f9755a45d6d004aTimo Sirainen
e95dba8921087afebb8a92c592af3b8ca22ae796Timo Sirainenunsigned int index_storage_get_recent_count(MailIndex *index);
1093de32efb2a231949566d4bd8aa55a8f43fb70Timo Sirainen
e95dba8921087afebb8a92c592af3b8ca22ae796Timo Sirainenint index_expunge_seek_first(IndexMailbox *ibox, unsigned int *seq,
e95dba8921087afebb8a92c592af3b8ca22ae796Timo Sirainen MailIndexRecord **rec);
e248fe370c4047cee921a91b48edc37944ab0526Timo Sirainenint index_expunge_mail(IndexMailbox *ibox, MailIndexRecord *rec,
e95dba8921087afebb8a92c592af3b8ca22ae796Timo Sirainen unsigned int seq, int notify);
1093de32efb2a231949566d4bd8aa55a8f43fb70Timo Sirainen
1093de32efb2a231949566d4bd8aa55a8f43fb70Timo Sirainenint index_storage_save(MailStorage *storage, const char *path,
1093de32efb2a231949566d4bd8aa55a8f43fb70Timo Sirainen IBuffer *inbuf, OBuffer *outbuf, uoff_t data_size);
1093de32efb2a231949566d4bd8aa55a8f43fb70Timo Sirainen
1093de32efb2a231949566d4bd8aa55a8f43fb70Timo Sirainenvoid *index_msgcache_get_context(MailIndex *index, MailIndexRecord *rec);
1093de32efb2a231949566d4bd8aa55a8f43fb70Timo Sirainen
1093de32efb2a231949566d4bd8aa55a8f43fb70Timo Sirainen/* Mailbox methods: */
1093de32efb2a231949566d4bd8aa55a8f43fb70Timo Sirainenvoid index_storage_set_sync_callbacks(Mailbox *box,
1093de32efb2a231949566d4bd8aa55a8f43fb70Timo Sirainen MailboxSyncCallbacks *callbacks,
1093de32efb2a231949566d4bd8aa55a8f43fb70Timo Sirainen void *context);
1093de32efb2a231949566d4bd8aa55a8f43fb70Timo Sirainenint index_storage_copy(Mailbox *box, Mailbox *destbox,
1093de32efb2a231949566d4bd8aa55a8f43fb70Timo Sirainen const char *messageset, int uidset);
1093de32efb2a231949566d4bd8aa55a8f43fb70Timo Sirainenint index_storage_expunge(Mailbox *box, int notify);
1093de32efb2a231949566d4bd8aa55a8f43fb70Timo Sirainenint index_storage_get_status(Mailbox *box, MailboxStatusItems items,
1093de32efb2a231949566d4bd8aa55a8f43fb70Timo Sirainen MailboxStatus *status);
1093de32efb2a231949566d4bd8aa55a8f43fb70Timo Sirainenint index_storage_sync(Mailbox *box, int sync_expunges);
1093de32efb2a231949566d4bd8aa55a8f43fb70Timo Sirainenint index_storage_update_flags(Mailbox *box, const char *messageset, int uidset,
1093de32efb2a231949566d4bd8aa55a8f43fb70Timo Sirainen MailFlags flags, const char *custom_flags[],
1093de32efb2a231949566d4bd8aa55a8f43fb70Timo Sirainen ModifyType modify_type, int notify,
1093de32efb2a231949566d4bd8aa55a8f43fb70Timo Sirainen int *all_found);
1093de32efb2a231949566d4bd8aa55a8f43fb70Timo Sirainenint index_storage_fetch(Mailbox *box, MailFetchData *fetch_data,
1093de32efb2a231949566d4bd8aa55a8f43fb70Timo Sirainen OBuffer *outbuf, int *all_found);
1093de32efb2a231949566d4bd8aa55a8f43fb70Timo Sirainenint index_storage_search(Mailbox *box, MailSearchArg *args,
1093de32efb2a231949566d4bd8aa55a8f43fb70Timo Sirainen OBuffer *outbuf, int uid_result);
1093de32efb2a231949566d4bd8aa55a8f43fb70Timo Sirainen
1093de32efb2a231949566d4bd8aa55a8f43fb70Timo Sirainen#endif
1093de32efb2a231949566d4bd8aa55a8f43fb70Timo Sirainen