Mercurial > dovecot > core-2.2
annotate src/lib-storage/list/mailbox-list-index.h @ 14342:0274c4132052
mailbox_list_index=yes: Delay opening/creating the index until it's needed.
This also fixes an error when trying to create the index before the parent
director is created.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 14 Mar 2012 15:34:14 +0200 |
parents | 6cb102aa5d63 |
children | a16d77a075bb |
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 |
13591
612b8a73ada7
mailbox list indexes: Added comment.
Timo Sirainen <tss@iki.fi>
parents:
13590
diff
changeset
|
4 /* Mailbox list index basically contains: |
612b8a73ada7
mailbox list indexes: Added comment.
Timo Sirainen <tss@iki.fi>
parents:
13590
diff
changeset
|
5 |
612b8a73ada7
mailbox list indexes: Added comment.
Timo Sirainen <tss@iki.fi>
parents:
13590
diff
changeset
|
6 Header contains ID => name mapping. The name isn't the full mailbox name, |
612b8a73ada7
mailbox list indexes: Added comment.
Timo Sirainen <tss@iki.fi>
parents:
13590
diff
changeset
|
7 but rather each hierarchy level has its own ID and name. For example a |
612b8a73ada7
mailbox list indexes: Added comment.
Timo Sirainen <tss@iki.fi>
parents:
13590
diff
changeset
|
8 mailbox name "foo/bar" (with '/' as separator) would have separate IDs for |
612b8a73ada7
mailbox list indexes: Added comment.
Timo Sirainen <tss@iki.fi>
parents:
13590
diff
changeset
|
9 "foo" and "bar" names. |
612b8a73ada7
mailbox list indexes: Added comment.
Timo Sirainen <tss@iki.fi>
parents:
13590
diff
changeset
|
10 |
612b8a73ada7
mailbox list indexes: Added comment.
Timo Sirainen <tss@iki.fi>
parents:
13590
diff
changeset
|
11 The records contain { parent_uid, uid, name_id } field that can be used to |
612b8a73ada7
mailbox list indexes: Added comment.
Timo Sirainen <tss@iki.fi>
parents:
13590
diff
changeset
|
12 build the whole mailbox tree. parent_uid=0 means root, otherwise it's the |
612b8a73ada7
mailbox list indexes: Added comment.
Timo Sirainen <tss@iki.fi>
parents:
13590
diff
changeset
|
13 parent node's uid. |
612b8a73ada7
mailbox list indexes: Added comment.
Timo Sirainen <tss@iki.fi>
parents:
13590
diff
changeset
|
14 |
612b8a73ada7
mailbox list indexes: Added comment.
Timo Sirainen <tss@iki.fi>
parents:
13590
diff
changeset
|
15 Each record also contains GUID for each selectable mailbox. If a mailbox |
612b8a73ada7
mailbox list indexes: Added comment.
Timo Sirainen <tss@iki.fi>
parents:
13590
diff
changeset
|
16 is recreated using the same name, its GUID also changes. Note however that |
612b8a73ada7
mailbox list indexes: Added comment.
Timo Sirainen <tss@iki.fi>
parents:
13590
diff
changeset
|
17 the UID doesn't change, because the UID refers to the mailbox name, not to |
612b8a73ada7
mailbox list indexes: Added comment.
Timo Sirainen <tss@iki.fi>
parents:
13590
diff
changeset
|
18 the mailbox itself. |
612b8a73ada7
mailbox list indexes: Added comment.
Timo Sirainen <tss@iki.fi>
parents:
13590
diff
changeset
|
19 |
612b8a73ada7
mailbox list indexes: Added comment.
Timo Sirainen <tss@iki.fi>
parents:
13590
diff
changeset
|
20 The records may contain also extensions for allowing mailbox_get_status() |
612b8a73ada7
mailbox list indexes: Added comment.
Timo Sirainen <tss@iki.fi>
parents:
13590
diff
changeset
|
21 to return values directly from the mailbox list index. Storage backends |
612b8a73ada7
mailbox list indexes: Added comment.
Timo Sirainen <tss@iki.fi>
parents:
13590
diff
changeset
|
22 may also add their own extensions to figure out if a record is up to date. |
612b8a73ada7
mailbox list indexes: Added comment.
Timo Sirainen <tss@iki.fi>
parents:
13590
diff
changeset
|
23 */ |
612b8a73ada7
mailbox list indexes: Added comment.
Timo Sirainen <tss@iki.fi>
parents:
13590
diff
changeset
|
24 |
5450
7a6db5ec047d
Better type safety to module_contexts arrays. Already fixed some bugs.
Timo Sirainen <tss@iki.fi>
parents:
5324
diff
changeset
|
25 #include "module-context.h" |
4848
967de900c73a
Mailbox list indexing and related changes. Currently works only with
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
26 #include "mailbox-list-private.h" |
967de900c73a
Mailbox list indexing and related changes. Currently works only with
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
27 |
12641
ad002fdc6a6c
lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
28 #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
|
29 |
967de900c73a
Mailbox list indexing and related changes. Currently works only with
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
30 #define INDEX_LIST_CONTEXT(obj) \ |
13586
8800d0429b7c
Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents:
13584
diff
changeset
|
31 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
|
32 |
13588
940ddec22822
mailbox list indexes: Moved syncing code to separate file.
Timo Sirainen <tss@iki.fi>
parents:
13587
diff
changeset
|
33 struct mail_index_view; |
940ddec22822
mailbox list indexes: Moved syncing code to separate file.
Timo Sirainen <tss@iki.fi>
parents:
13587
diff
changeset
|
34 struct mailbox; |
940ddec22822
mailbox list indexes: Moved syncing code to separate file.
Timo Sirainen <tss@iki.fi>
parents:
13587
diff
changeset
|
35 |
12641
ad002fdc6a6c
lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
36 /* 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
|
37 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
|
38 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
|
39 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
|
40 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
|
41 |
ad002fdc6a6c
lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
42 /* set during syncing for mailboxes that still exist */ |
13590
6912969d94e8
mailbox list indexes: Code cleanups.
Timo Sirainen <tss@iki.fi>
parents:
13589
diff
changeset
|
43 MAILBOX_LIST_INDEX_FLAG_SYNC_EXISTS = MAIL_FLAGGED |
12641
ad002fdc6a6c
lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
44 }; |
ad002fdc6a6c
lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
45 |
12645
d3d5f104ca40
lib-storage: Mailbox list indexes now refresh the index on create/delete/rename.
Timo Sirainen <tss@iki.fi>
parents:
12641
diff
changeset
|
46 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
|
47 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
|
48 /* 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
|
49 }; |
d3d5f104ca40
lib-storage: Mailbox list indexes now refresh the index on create/delete/rename.
Timo Sirainen <tss@iki.fi>
parents:
12641
diff
changeset
|
50 |
12641
ad002fdc6a6c
lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
51 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
|
52 /* 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
|
53 uint32_t name_id; |
ad002fdc6a6c
lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
54 /* 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
|
55 uint32_t parent_uid; |
ad002fdc6a6c
lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
56 |
ad002fdc6a6c
lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
57 /* 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
|
58 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
|
59 |
13287
957060ca5b69
Moved GUID code to liblib. Use guid_128_t type consistently everywhere.
Timo Sirainen <tss@iki.fi>
parents:
12650
diff
changeset
|
60 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
|
61 uint32_t uid_validity; |
ad002fdc6a6c
lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
62 }; |
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 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
|
65 uint32_t messages; |
ad002fdc6a6c
lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
66 uint32_t unseen; |
ad002fdc6a6c
lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
67 uint32_t recent; |
ad002fdc6a6c
lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
68 uint32_t uidnext; |
ad002fdc6a6c
lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
69 }; |
ad002fdc6a6c
lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
70 |
13586
8800d0429b7c
Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents:
13584
diff
changeset
|
71 struct mailbox_list_index_node { |
8800d0429b7c
Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents:
13584
diff
changeset
|
72 struct mailbox_list_index_node *parent; |
8800d0429b7c
Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents:
13584
diff
changeset
|
73 struct mailbox_list_index_node *next; |
8800d0429b7c
Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents:
13584
diff
changeset
|
74 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
|
75 |
ad002fdc6a6c
lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
76 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
|
77 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
|
78 const char *name; |
ad002fdc6a6c
lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
79 }; |
ad002fdc6a6c
lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
80 |
13586
8800d0429b7c
Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents:
13584
diff
changeset
|
81 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
|
82 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
|
83 |
12641
ad002fdc6a6c
lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
84 const char *path; |
ad002fdc6a6c
lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
85 struct mail_index *index; |
ad002fdc6a6c
lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
86 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
|
87 |
ad002fdc6a6c
lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
88 /* 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
|
89 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
|
90 int iter_refcount; |
4848
967de900c73a
Mailbox list indexing and related changes. Currently works only with
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
91 |
12641
ad002fdc6a6c
lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
92 pool_t mailbox_pool; |
ad002fdc6a6c
lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
93 /* 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
|
94 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
|
95 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
|
96 |
ad002fdc6a6c
lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
97 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
|
98 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
|
99 |
12645
d3d5f104ca40
lib-storage: Mailbox list indexes now refresh the index on create/delete/rename.
Timo Sirainen <tss@iki.fi>
parents:
12641
diff
changeset
|
100 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
|
101 |
13586
8800d0429b7c
Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents:
13584
diff
changeset
|
102 /* 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
|
103 struct hash_table *mailbox_hash; |
13586
8800d0429b7c
Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents:
13584
diff
changeset
|
104 struct mailbox_list_index_node *mailbox_tree; |
14342
0274c4132052
mailbox_list_index=yes: Delay opening/creating the index until it's needed.
Timo Sirainen <tss@iki.fi>
parents:
14334
diff
changeset
|
105 |
0274c4132052
mailbox_list_index=yes: Delay opening/creating the index until it's needed.
Timo Sirainen <tss@iki.fi>
parents:
14334
diff
changeset
|
106 unsigned int opened:1; |
4848
967de900c73a
Mailbox list indexing and related changes. Currently works only with
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
107 }; |
967de900c73a
Mailbox list indexing and related changes. Currently works only with
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
108 |
13586
8800d0429b7c
Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents:
13584
diff
changeset
|
109 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
|
110 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
|
111 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
|
112 |
967de900c73a
Mailbox list indexing and related changes. Currently works only with
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
113 struct mailbox_info info; |
14334
6cb102aa5d63
mailbox_list_index=yes iteration: Don't allocate returned mailbox names from data stack.
Timo Sirainen <tss@iki.fi>
parents:
14243
diff
changeset
|
114 pool_t info_pool; |
6cb102aa5d63
mailbox_list_index=yes iteration: Don't allocate returned mailbox names from data stack.
Timo Sirainen <tss@iki.fi>
parents:
14243
diff
changeset
|
115 |
12641
ad002fdc6a6c
lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
116 unsigned int parent_len; |
ad002fdc6a6c
lib-storage: Initial commit for rewritten mailbox list indexes code.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
117 string_t *path; |
13586
8800d0429b7c
Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents:
13584
diff
changeset
|
118 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
|
119 char sep; |
4848
967de900c73a
Mailbox list indexing and related changes. Currently works only with
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
120 |
967de900c73a
Mailbox list indexing and related changes. Currently works only with
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
121 unsigned int failed:1; |
967de900c73a
Mailbox list indexing and related changes. Currently works only with
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
122 }; |
967de900c73a
Mailbox list indexing and related changes. Currently works only with
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
123 |
13586
8800d0429b7c
Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents:
13584
diff
changeset
|
124 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
|
125 &mailbox_list_module_register); |
4848
967de900c73a
Mailbox list indexing and related changes. Currently works only with
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
126 |
13589
75679aca405a
mailbox list indexes: Error handling fixes.
Timo Sirainen <tss@iki.fi>
parents:
13588
diff
changeset
|
127 void mailbox_list_index_set_index_error(struct mailbox_list *list); |
13586
8800d0429b7c
Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents:
13584
diff
changeset
|
128 struct mailbox_list_index_node * |
8800d0429b7c
Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents:
13584
diff
changeset
|
129 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
|
130 |
14243
ba2b4f8a1bb1
mailbox list indexes: Avoid unnecessary refresh flag writes.
Timo Sirainen <tss@iki.fi>
parents:
13591
diff
changeset
|
131 bool mailbox_list_index_need_refresh(struct mailbox_list_index *ilist, |
ba2b4f8a1bb1
mailbox list indexes: Avoid unnecessary refresh flag writes.
Timo Sirainen <tss@iki.fi>
parents:
13591
diff
changeset
|
132 struct mail_index_view *view); |
13586
8800d0429b7c
Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents:
13584
diff
changeset
|
133 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
|
134 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
|
135 |
13588
940ddec22822
mailbox list indexes: Moved syncing code to separate file.
Timo Sirainen <tss@iki.fi>
parents:
13587
diff
changeset
|
136 struct mailbox_list_index_node * |
940ddec22822
mailbox list indexes: Moved syncing code to separate file.
Timo Sirainen <tss@iki.fi>
parents:
13587
diff
changeset
|
137 mailbox_list_index_node_find_sibling(struct mailbox_list_index_node *node, |
940ddec22822
mailbox list indexes: Moved syncing code to separate file.
Timo Sirainen <tss@iki.fi>
parents:
13587
diff
changeset
|
138 const char *name); |
940ddec22822
mailbox list indexes: Moved syncing code to separate file.
Timo Sirainen <tss@iki.fi>
parents:
13587
diff
changeset
|
139 void mailbox_list_index_reset(struct mailbox_list_index *ilist); |
13589
75679aca405a
mailbox list indexes: Error handling fixes.
Timo Sirainen <tss@iki.fi>
parents:
13588
diff
changeset
|
140 int mailbox_list_index_parse(struct mailbox_list_index *ilist, |
75679aca405a
mailbox list indexes: Error handling fixes.
Timo Sirainen <tss@iki.fi>
parents:
13588
diff
changeset
|
141 struct mail_index_view *view, bool force); |
13588
940ddec22822
mailbox list indexes: Moved syncing code to separate file.
Timo Sirainen <tss@iki.fi>
parents:
13587
diff
changeset
|
142 int mailbox_list_index_sync(struct mailbox_list *list); |
940ddec22822
mailbox list indexes: Moved syncing code to separate file.
Timo Sirainen <tss@iki.fi>
parents:
13587
diff
changeset
|
143 |
13587
cd7b56e965d2
mailbox list indexes: Moved iteration code to separate file.
Timo Sirainen <tss@iki.fi>
parents:
13586
diff
changeset
|
144 struct mailbox_list_iterate_context * |
cd7b56e965d2
mailbox list indexes: Moved iteration code to separate file.
Timo Sirainen <tss@iki.fi>
parents:
13586
diff
changeset
|
145 mailbox_list_index_iter_init(struct mailbox_list *list, |
cd7b56e965d2
mailbox list indexes: Moved iteration code to separate file.
Timo Sirainen <tss@iki.fi>
parents:
13586
diff
changeset
|
146 const char *const *patterns, |
cd7b56e965d2
mailbox list indexes: Moved iteration code to separate file.
Timo Sirainen <tss@iki.fi>
parents:
13586
diff
changeset
|
147 enum mailbox_list_iter_flags flags); |
cd7b56e965d2
mailbox list indexes: Moved iteration code to separate file.
Timo Sirainen <tss@iki.fi>
parents:
13586
diff
changeset
|
148 const struct mailbox_info * |
cd7b56e965d2
mailbox list indexes: Moved iteration code to separate file.
Timo Sirainen <tss@iki.fi>
parents:
13586
diff
changeset
|
149 mailbox_list_index_iter_next(struct mailbox_list_iterate_context *ctx); |
cd7b56e965d2
mailbox list indexes: Moved iteration code to separate file.
Timo Sirainen <tss@iki.fi>
parents:
13586
diff
changeset
|
150 int mailbox_list_index_iter_deinit(struct mailbox_list_iterate_context *ctx); |
cd7b56e965d2
mailbox list indexes: Moved iteration code to separate file.
Timo Sirainen <tss@iki.fi>
parents:
13586
diff
changeset
|
151 |
13586
8800d0429b7c
Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents:
13584
diff
changeset
|
152 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
|
153 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
|
154 |
13586
8800d0429b7c
Renamed index-mailbox-list* to mailbox-list-index*
Timo Sirainen <tss@iki.fi>
parents:
13584
diff
changeset
|
155 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
|
156 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
|
157 |
967de900c73a
Mailbox list indexing and related changes. Currently works only with
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
158 #endif |