annotate src/lib-storage/list/mailbox-list-index.h @ 13586:8800d0429b7c

Renamed index-mailbox-list* to mailbox-list-index*
author Timo Sirainen <tss@iki.fi>
date Sun, 02 Oct 2011 17:12:58 +0300
parents src/lib-storage/list/index-mailbox-list.h@e06e178c8fd1
children cd7b56e965d2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13586
8800d0429b7c Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents: 13584
diff changeset
1 #ifndef MAILBOX_LIST_INDEX_H
8800d0429b7c Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents: 13584
diff changeset
2 #define MAILBOX_LIST_INDEX_H
4848
967de900c73a Mailbox list indexing and related changes. Currently works only with
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
3
5450
7a6db5ec047d Better type safety to module_contexts arrays. Already fixed some bugs.
Timo Sirainen <tss@iki.fi>
parents: 5324
diff changeset
4 #include "module-context.h"
4848
967de900c73a Mailbox list indexing and related changes. Currently works only with
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
5 #include "mailbox-list-private.h"
967de900c73a Mailbox list indexing and related changes. Currently works only with
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
6
12641
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
7 #define MAILBOX_LIST_INDEX_PREFIX "dovecot.list.index"
4848
967de900c73a Mailbox list indexing and related changes. Currently works only with
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
8
967de900c73a Mailbox list indexing and related changes. Currently works only with
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
9 #define INDEX_LIST_CONTEXT(obj) \
13586
8800d0429b7c Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents: 13584
diff changeset
10 MODULE_CONTEXT(obj, mailbox_list_index_module)
4848
967de900c73a Mailbox list indexing and related changes. Currently works only with
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
11
12641
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
12 /* stored in mail_index_record.flags: */
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
13 enum mailbox_list_index_flags {
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
14 MAILBOX_LIST_INDEX_FLAG_NONEXISTENT = MAIL_DELETED,
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
15 MAILBOX_LIST_INDEX_FLAG_NOSELECT = MAIL_DRAFT,
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
16 MAILBOX_LIST_INDEX_FLAG_NOINFERIORS = MAIL_ANSWERED,
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
17
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
18 /* set during syncing for mailboxes that still exist */
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
19 MAILBOX_LIST_INDEX_FLAG_MARKED
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
20 };
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
21
12645
d3d5f104ca40 lib-storage: Mailbox list indexes now refresh the index on create/delete/rename.
Timo Sirainen <tss@iki.fi>
parents: 12641
diff changeset
22 struct mailbox_list_index_header {
d3d5f104ca40 lib-storage: Mailbox list indexes now refresh the index on create/delete/rename.
Timo Sirainen <tss@iki.fi>
parents: 12641
diff changeset
23 uint8_t refresh_flag;
d3d5f104ca40 lib-storage: Mailbox list indexes now refresh the index on create/delete/rename.
Timo Sirainen <tss@iki.fi>
parents: 12641
diff changeset
24 /* array of { uint32_t id; char name[]; } */
d3d5f104ca40 lib-storage: Mailbox list indexes now refresh the index on create/delete/rename.
Timo Sirainen <tss@iki.fi>
parents: 12641
diff changeset
25 };
d3d5f104ca40 lib-storage: Mailbox list indexes now refresh the index on create/delete/rename.
Timo Sirainen <tss@iki.fi>
parents: 12641
diff changeset
26
12641
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
27 struct mailbox_list_index_record {
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
28 /* points to given id in header */
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
29 uint32_t name_id;
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
30 /* parent mailbox's UID, 0 = root */
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
31 uint32_t parent_uid;
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
32
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
33 /* the following fields are temporarily zero while unknown,
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
34 also permanently zero for \NoSelect and \Nonexistent mailboxes: */
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
35
13287
957060ca5b69 Moved GUID code to liblib. Use guid_128_t type consistently everywhere.
Timo Sirainen <tss@iki.fi>
parents: 12650
diff changeset
36 guid_128_t guid;
12641
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
37 uint32_t uid_validity;
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
38 };
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
39
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
40 struct mailbox_list_index_msgs_record {
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
41 uint32_t messages;
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
42 uint32_t unseen;
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
43 uint32_t recent;
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
44 uint32_t uidnext;
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
45 };
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
46
13586
8800d0429b7c Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents: 13584
diff changeset
47 struct mailbox_list_index_node {
8800d0429b7c Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents: 13584
diff changeset
48 struct mailbox_list_index_node *parent;
8800d0429b7c Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents: 13584
diff changeset
49 struct mailbox_list_index_node *next;
8800d0429b7c Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents: 13584
diff changeset
50 struct mailbox_list_index_node *children;
12641
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
51
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
52 uint32_t name_id, uid;
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
53 enum mailbox_list_index_flags flags;
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
54 const char *name;
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
55 };
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
56
13586
8800d0429b7c Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents: 13584
diff changeset
57 struct mailbox_list_index {
5450
7a6db5ec047d Better type safety to module_contexts arrays. Already fixed some bugs.
Timo Sirainen <tss@iki.fi>
parents: 5324
diff changeset
58 union mailbox_list_module_context module_ctx;
4848
967de900c73a Mailbox list indexing and related changes. Currently works only with
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
59
12641
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
60 const char *path;
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
61 struct mail_index *index;
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
62 uint32_t ext_id, msgs_ext_id, hmodseq_ext_id;
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
63
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
64 /* Number of iterations going on. Don't refresh mailbox list while
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
65 any iterations are going on. */
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
66 int iter_refcount;
4848
967de900c73a Mailbox list indexing and related changes. Currently works only with
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
67
12641
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
68 pool_t mailbox_pool;
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
69 /* uint32_t id => const char *name */
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
70 struct hash_table *mailbox_names;
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
71 uint32_t highest_name_id;
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
72
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
73 uint32_t sync_log_file_seq;
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
74 uoff_t sync_log_file_offset;
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
75
12645
d3d5f104ca40 lib-storage: Mailbox list indexes now refresh the index on create/delete/rename.
Timo Sirainen <tss@iki.fi>
parents: 12641
diff changeset
76 uint32_t sync_stamp;
d3d5f104ca40 lib-storage: Mailbox list indexes now refresh the index on create/delete/rename.
Timo Sirainen <tss@iki.fi>
parents: 12641
diff changeset
77
13586
8800d0429b7c Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents: 13584
diff changeset
78 /* uint32_t uid => struct mailbox_list_index_node* */
12641
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
79 struct hash_table *mailbox_hash;
13586
8800d0429b7c Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents: 13584
diff changeset
80 struct mailbox_list_index_node *mailbox_tree;
4848
967de900c73a Mailbox list indexing and related changes. Currently works only with
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
81 };
967de900c73a Mailbox list indexing and related changes. Currently works only with
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
82
13586
8800d0429b7c Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents: 13584
diff changeset
83 struct mailbox_list_index_iterate_context {
4848
967de900c73a Mailbox list indexing and related changes. Currently works only with
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
84 struct mailbox_list_iterate_context ctx;
967de900c73a Mailbox list indexing and related changes. Currently works only with
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
85 struct mailbox_list_iterate_context *backend_ctx;
967de900c73a Mailbox list indexing and related changes. Currently works only with
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
86
967de900c73a Mailbox list indexing and related changes. Currently works only with
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
87 struct mailbox_info info;
12641
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
88 unsigned int parent_len;
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
89 string_t *path;
13586
8800d0429b7c Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents: 13584
diff changeset
90 struct mailbox_list_index_node *next_node;
12641
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
91 char sep;
4848
967de900c73a Mailbox list indexing and related changes. Currently works only with
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
92
967de900c73a Mailbox list indexing and related changes. Currently works only with
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
93 unsigned int failed:1;
967de900c73a Mailbox list indexing and related changes. Currently works only with
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
94 };
967de900c73a Mailbox list indexing and related changes. Currently works only with
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
95
13586
8800d0429b7c Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents: 13584
diff changeset
96 extern MODULE_CONTEXT_DEFINE(mailbox_list_index_module,
5450
7a6db5ec047d Better type safety to module_contexts arrays. Already fixed some bugs.
Timo Sirainen <tss@iki.fi>
parents: 5324
diff changeset
97 &mailbox_list_module_register);
4848
967de900c73a Mailbox list indexing and related changes. Currently works only with
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
98
13586
8800d0429b7c Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents: 13584
diff changeset
99 struct mailbox_list_index_node *
8800d0429b7c Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents: 13584
diff changeset
100 mailbox_list_index_lookup(struct mailbox_list *list, const char *name);
12641
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
101
13586
8800d0429b7c Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents: 13584
diff changeset
102 int mailbox_list_index_refresh(struct mailbox_list *list);
8800d0429b7c Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents: 13584
diff changeset
103 void mailbox_list_index_refresh_later(struct mailbox_list *list);
12641
ad002fdc6a6c lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
104
13586
8800d0429b7c Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents: 13584
diff changeset
105 void mailbox_list_index_status_set_info_flags(struct mailbox *box, uint32_t uid,
12650
0cadba9597cb lib-storage: Use RECENT count in mailbox list index to set \Marked and \UnMarked LIST flag.
Timo Sirainen <tss@iki.fi>
parents: 12645
diff changeset
106 enum mailbox_info_flags *flags);
0cadba9597cb lib-storage: Use RECENT count in mailbox list index to set \Marked and \UnMarked LIST flag.
Timo Sirainen <tss@iki.fi>
parents: 12645
diff changeset
107
13586
8800d0429b7c Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents: 13584
diff changeset
108 void mailbox_list_index_status_init(void);
8800d0429b7c Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents: 13584
diff changeset
109 void mailbox_list_index_status_init_list(struct mailbox_list *list);
4848
967de900c73a Mailbox list indexing and related changes. Currently works only with
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
110
967de900c73a Mailbox list indexing and related changes. Currently works only with
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
111 #endif