From: Phil Carmody Date: Tue, 20 Jan 2015 23:52:59 +0000 (+0200) Subject: plugins/fts: expunge-log - query function to lookup GUID/UID X-Git-Tag: 2.2.16.rc1~111 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5433d56d338db3948bf7bc22ef1daaba147dbb5d;p=thirdparty%2Fdovecot%2Fcore.git plugins/fts: expunge-log - query function to lookup GUID/UID Constant time hash lookup for GUID. Log time lookup in seq_range array. Signed-off-by: Phil Carmody --- diff --git a/src/plugins/fts/fts-expunge-log.c b/src/plugins/fts/fts-expunge-log.c index 02b60312cc..f099ccce0f 100644 --- a/src/plugins/fts/fts-expunge-log.c +++ b/src/plugins/fts/fts-expunge-log.c @@ -532,3 +532,14 @@ int fts_expunge_log_flatten(const char *path, return ret; } +bool fts_expunge_log_contains(const struct fts_expunge_log_append_ctx *ctx, + const guid_128_t mailbox_guid, uint32_t uid) +{ + const struct fts_expunge_log_mailbox *mailbox; + const uint8_t *guid_p = mailbox_guid; + + mailbox = hash_table_lookup(ctx->mailboxes, guid_p); + if (mailbox == NULL) + return FALSE; + return seq_range_exists(&mailbox->uids, uid); +} diff --git a/src/plugins/fts/fts-expunge-log.h b/src/plugins/fts/fts-expunge-log.h index 2240202615..0b4647fb74 100644 --- a/src/plugins/fts/fts-expunge-log.h +++ b/src/plugins/fts/fts-expunge-log.h @@ -41,4 +41,7 @@ int fts_expunge_log_read_end(struct fts_expunge_log_read_ctx **ctx); The struct it returns cannot be written, as it has no backing store */ int fts_expunge_log_flatten(const char *path, struct fts_expunge_log_append_ctx **flattened_r); +bool fts_expunge_log_contains(const struct fts_expunge_log_append_ctx *ctx, + const guid_128_t mailbox_guid, uint32_t uid); + #endif