changeset 3825:a983412e1976 HEAD

Changed mail_index_view_sync_next() to return struct mail_index_view_sync_rec records which only contain the type and UID range. Makes it clearer that the caller won't get anything else, and flag updates now don't need to update add_flags/remove_flags fields.
author Timo Sirainen <tss@iki.fi>
date Fri, 06 Jan 2006 19:37:30 +0200
parents 3e756ea0474b
children 20430dbf04d4
files src/lib-index/mail-index-sync-private.h src/lib-index/mail-index-sync.c src/lib-index/mail-index-view-sync.c src/lib-index/mail-index.h src/lib-storage/index/index-sync.c
diffstat 5 files changed, 21 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-index/mail-index-sync-private.h	Fri Jan 06 19:30:26 2006 +0200
+++ b/src/lib-index/mail-index-sync-private.h	Fri Jan 06 19:37:30 2006 +0200
@@ -70,13 +70,6 @@
 void mail_index_sync_replace_map(struct mail_index_sync_map_ctx *ctx,
 				 struct mail_index_map *map);
 
-void
-mail_index_sync_get_expunge(struct mail_index_sync_rec *rec,
-			    const struct mail_transaction_expunge *exp);
-void
-mail_index_sync_get_update(struct mail_index_sync_rec *rec,
-			   const struct mail_transaction_flag_update *update);
-
 void mail_index_sync_init_expunge_handlers(struct mail_index_sync_map_ctx *ctx);
 void
 mail_index_sync_deinit_expunge_handlers(struct mail_index_sync_map_ctx *ctx);
--- a/src/lib-index/mail-index-sync.c	Fri Jan 06 19:30:26 2006 +0200
+++ b/src/lib-index/mail-index-sync.c	Fri Jan 06 19:37:30 2006 +0200
@@ -430,7 +430,7 @@
 	return 1;
 }
 
-void
+static void
 mail_index_sync_get_expunge(struct mail_index_sync_rec *rec,
 			    const struct mail_transaction_expunge *exp)
 {
@@ -439,7 +439,7 @@
 	rec->uid2 = exp->uid2;
 }
 
-void
+static void
 mail_index_sync_get_update(struct mail_index_sync_rec *rec,
 			   const struct mail_transaction_flag_update *update)
 {
--- a/src/lib-index/mail-index-view-sync.c	Fri Jan 06 19:30:26 2006 +0200
+++ b/src/lib-index/mail-index-view-sync.c	Fri Jan 06 19:37:30 2006 +0200
@@ -365,7 +365,7 @@
 
 static int
 mail_index_view_sync_get_rec(struct mail_index_view_sync_ctx *ctx,
-			     struct mail_index_sync_rec *rec)
+			     struct mail_index_view_sync_rec *rec)
 {
 	const struct mail_transaction_header *hdr = ctx->hdr;
 	const void *data = ctx->data;
@@ -383,8 +383,11 @@
 			CONST_PTR_OFFSET(data, ctx->data_offset);
 
 		/* 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);
-                mail_index_sync_get_expunge(rec, exp);
 		break;
 	}
 	case MAIL_TRANSACTION_FLAG_UPDATE: {
@@ -403,7 +406,10 @@
 
 			update = CONST_PTR_OFFSET(data, ctx->data_offset);
 		}
-                mail_index_sync_get_update(rec, update);
+
+		rec->type = MAIL_INDEX_SYNC_TYPE_FLAGS;
+		rec->uid1 = update->uid1;
+		rec->uid2 = update->uid2;
 		break;
 	}
 	case MAIL_TRANSACTION_KEYWORD_UPDATE: {
@@ -421,9 +427,6 @@
 		}
 
 		uids = CONST_PTR_OFFSET(data, ctx->data_offset);
-		/* FIXME: rec->keyword_idx isn't set, but no-one cares
-		   currently. perhaps the whole view syncing API should just
-		   be returning type and uid range.. */
 		rec->type = MAIL_INDEX_SYNC_TYPE_KEYWORD_ADD;
 		rec->uid1 = uids[0];
 		rec->uid2 = uids[1];
@@ -449,7 +452,7 @@
 }
 
 int mail_index_view_sync_next(struct mail_index_view_sync_ctx *ctx,
-			      struct mail_index_sync_rec *sync_rec)
+			      struct mail_index_view_sync_rec *sync_rec)
 {
 	int ret;
 
--- a/src/lib-index/mail-index.h	Fri Jan 06 19:30:26 2006 +0200
+++ b/src/lib-index/mail-index.h	Fri Jan 06 19:37:30 2006 +0200
@@ -135,6 +135,13 @@
 	unsigned int keyword_idx;
 };
 
+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;
+};
+
 struct mail_index;
 struct mail_index_map;
 struct mail_index_view;
@@ -254,7 +261,7 @@
 			       struct mail_index_view_sync_ctx **ctx_r);
 /* Returns -1 if error, 0 if sync is finished, 1 if record was filled. */
 int mail_index_view_sync_next(struct mail_index_view_sync_ctx *ctx,
-			      struct mail_index_sync_rec *sync_rec);
+			      struct mail_index_view_sync_rec *sync_rec);
 const uint32_t *
 mail_index_view_sync_get_expunges(struct mail_index_view_sync_ctx *ctx,
 				 unsigned int *count_r);
--- a/src/lib-storage/index/index-sync.c	Fri Jan 06 19:30:26 2006 +0200
+++ b/src/lib-storage/index/index-sync.c	Fri Jan 06 19:37:30 2006 +0200
@@ -173,7 +173,7 @@
 {
 	struct index_mailbox_sync_context *ctx =
 		(struct index_mailbox_sync_context *)_ctx;
-	struct mail_index_sync_rec sync;
+	struct mail_index_view_sync_rec sync;
 	int ret;
 
 	if (ctx->failed)