From: Timo Sirainen Date: Tue, 17 Jun 2008 07:43:16 +0000 (+0300) Subject: Changed mail index view syncing API to return only flag changes. X-Git-Tag: 1.2.alpha1~286 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1f43c8ac132c153c224c4fffe34b2c3075d87ef7;p=thirdparty%2Fdovecot%2Fcore.git Changed mail index view syncing API to return only flag changes. Currently it has only a single caller and it's not interested in anything else. --HG-- branch : HEAD --- diff --git a/src/lib-index/mail-index-view-sync.c b/src/lib-index/mail-index-view-sync.c index 7bab0410e3..7b714a37f7 100644 --- a/src/lib-index/mail-index-view-sync.c +++ b/src/lib-index/mail-index-view-sync.c @@ -509,31 +509,6 @@ mail_index_view_sync_get_rec(struct mail_index_view_sync_ctx *ctx, const void *data = ctx->data; switch (hdr->type & MAIL_TRANSACTION_TYPE_MASK) { - case MAIL_TRANSACTION_APPEND: { - /* data contains the appended records, but we don't care */ - rec->type = MAIL_INDEX_SYNC_TYPE_APPEND; - rec->uid1 = rec->uid2 = 0; - ctx->data_offset += hdr->size; - break; - } - case MAIL_TRANSACTION_EXPUNGE: { - const struct mail_transaction_expunge *exp = - CONST_PTR_OFFSET(data, ctx->data_offset); - - if ((hdr->type & MAIL_TRANSACTION_EXTERNAL) == 0) { - /* this is simply a request for expunge */ - ctx->data_offset = ctx->hdr->size; - return 0; - } - - /* data contains mail_transaction_expunge[] */ - rec->type = MAIL_INDEX_SYNC_TYPE_EXPUNGE; - rec->uid1 = exp->uid1; - rec->uid2 = exp->uid2; - - ctx->data_offset += sizeof(*exp); - break; - } case MAIL_TRANSACTION_FLAG_UPDATE: { const struct mail_transaction_flag_update *update = CONST_PTR_OFFSET(data, ctx->data_offset); @@ -551,7 +526,7 @@ mail_index_view_sync_get_rec(struct mail_index_view_sync_ctx *ctx, update = CONST_PTR_OFFSET(data, ctx->data_offset); } - rec->type = MAIL_INDEX_SYNC_TYPE_FLAGS; + rec->type = MAIL_INDEX_VIEW_SYNC_TYPE_FLAGS; rec->uid1 = update->uid1; rec->uid2 = update->uid2; break; @@ -571,7 +546,7 @@ mail_index_view_sync_get_rec(struct mail_index_view_sync_ctx *ctx, } uids = CONST_PTR_OFFSET(data, ctx->data_offset); - rec->type = MAIL_INDEX_SYNC_TYPE_KEYWORD_ADD; + rec->type = MAIL_INDEX_VIEW_SYNC_TYPE_FLAGS; rec->uid1 = uids[0]; rec->uid2 = uids[1]; @@ -583,7 +558,7 @@ mail_index_view_sync_get_rec(struct mail_index_view_sync_ctx *ctx, CONST_PTR_OFFSET(data, ctx->data_offset); /* data contains mail_transaction_keyword_reset[] */ - rec->type = MAIL_INDEX_SYNC_TYPE_KEYWORD_RESET; + rec->type = MAIL_INDEX_VIEW_SYNC_TYPE_FLAGS; rec->uid1 = reset->uid1; rec->uid2 = reset->uid2; ctx->data_offset += sizeof(*reset); diff --git a/src/lib-index/mail-index.h b/src/lib-index/mail-index.h index a204e4b18d..dd04aa1f20 100644 --- a/src/lib-index/mail-index.h +++ b/src/lib-index/mail-index.h @@ -157,11 +157,14 @@ struct mail_index_sync_rec { unsigned int keyword_idx; }; +enum mail_index_view_sync_type { + /* Flags or keywords changed */ + MAIL_INDEX_VIEW_SYNC_TYPE_FLAGS = 0x01 +}; + struct mail_index_view_sync_rec { uint32_t uid1, uid2; - /* keyword appends and removes are packed into one and same - MAIL_INDEX_SYNC_TYPE_KEYWORD_ADD */ - enum mail_index_sync_type type; + enum mail_index_view_sync_type type; /* TRUE if this was a hidden transaction. */ unsigned int hidden:1; diff --git a/src/lib-storage/index/index-sync.c b/src/lib-storage/index/index-sync.c index b07d9e5f51..908272ea50 100644 --- a/src/lib-storage/index/index-sync.c +++ b/src/lib-storage/index/index-sync.c @@ -112,18 +112,10 @@ static void index_view_sync_recs_get(struct index_mailbox_sync_context *ctx) i_array_init(&ctx->modseq_updates, 32); while (mail_index_view_sync_next(ctx->sync_ctx, &sync_rec)) { switch (sync_rec.type) { - case MAIL_INDEX_SYNC_TYPE_APPEND: - /* not interested */ - break; - case MAIL_INDEX_SYNC_TYPE_EXPUNGE: - /* later */ - break; - case MAIL_INDEX_SYNC_TYPE_FLAGS: - case MAIL_INDEX_SYNC_TYPE_KEYWORD_ADD: - case MAIL_INDEX_SYNC_TYPE_KEYWORD_REMOVE: - case MAIL_INDEX_SYNC_TYPE_KEYWORD_RESET: + case MAIL_INDEX_VIEW_SYNC_TYPE_FLAGS: if (!mail_index_lookup_seq_range(ctx->ibox->view, - sync_rec.uid1, sync_rec.uid2, + sync_rec.uid1, + sync_rec.uid2, &seq1, &seq2)) break;