annotate src/lib-index/mail-cache-decisions.c @ 2342:fa529dd77176 HEAD

Fixes for big endian systems.
author Timo Sirainen <tss@iki.fi>
date Tue, 20 Jul 2004 20:52:38 +0300
parents 406692edc12d
children 604e9488a61b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2247
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1 /* Copyright (C) 2004 Timo Sirainen */
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
2
2259
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
3 /*
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
4 Users can be divided to three groups:
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
5
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
6 1. Most users will use only a single IMAP client which caches everything
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
7 locally. For these users it's quite pointless to do any kind of caching
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
8 as it only wastes disk space. That might also mean more disk I/O.
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
9
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
10 2. Some users use multiple IMAP clients which cache everything locally.
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
11 These could benefit from caching until all clients have fetched the
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
12 data. After that it's useless.
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
13
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
14 3. Some clients don't do permanent local caching at all. For example
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
15 Pine and webmails. These clients would benefit from caching everything.
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
16 Some locally caching clients might also access some data from server
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
17 again, such as when searching messages. They could benefit from caching
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
18 only these fields.
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
19
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
20 After thinking about these a while, I figured out that people who care
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
21 about performance most will be using Dovecot optimized LDA anyway
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
22 which updates the indexes/cache immediately. In that case even the first
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
23 user group would benefit from caching the same way as second group. LDA
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
24 reads the mail anyway, so it might as well extract some information
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
25 about it and store them into cache.
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
26
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
27 So, group 1. and 2. could be optimally implemented by keeping things
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
28 cached only for a while. I thought a week would be good. When cache file
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
29 is compressed, everything older than week will be dropped.
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
30
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
31 But how to figure out if user is in group 3? One quite easy rule would
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
32 be to see if client is accessing messages older than a week. But with
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
33 only that rule we might have already dropped useful cached data. It's
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
34 not very nice if we have to read and cache it twice.
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
35
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
36 Most locally caching clients always fetch new messages (all but body)
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
37 when they see them. They fetch them in ascending order. Noncaching
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
38 clients might fetch messages in pretty much any order, as they usually
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
39 don't fetch everything they can, only what's visible in screen. Some
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
40 will use server side sorting/threading which also makes messages to be
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
41 fetched in random order. Second rule would then be that if a session
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
42 doesn't fetch messages in ascending order, the fetched field type will
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
43 be permanently cached.
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
44
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
45 So, we have three caching decisions:
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
46
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
47 1. Don't cache: Clients have never wanted the field
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
48 2. Cache temporarily: Clients want this only once
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
49 3. Cache permanently: Clients want this more than once
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
50
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
51 Different mailboxes have different decisions. Different fields have
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
52 different decisions.
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
53
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
54 There are some problems, such as if a client accesses message older than
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
55 a week, we can't know if user just started using a new client which is
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
56 just filling it's local cache for the first time. Or it might be a
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
57 client user hasn't just used for over a week. In these cases we
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
58 shouldn't have marked the field to be permanently cached. User might
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
59 also switch clients from non-caching to caching.
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
60
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
61 So we should re-evaluate our caching decisions from time to time. This
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
62 is done by checking the above rules constantly and marking when was the
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
63 last time the decision was right. If decision hasn't matched for two
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
64 months, it's changed. I picked two months because people go to at least
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
65 one month vacations where they might still be reading mails, but with
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
66 different clients.
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
67 */
07c8813877cc Cache decision explanation comment.
Timo Sirainen <tss@iki.fi>
parents: 2247
diff changeset
68
2247
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
69 #include "lib.h"
2327
7d02e2a7672d Header caching redesigned. New design allows caching decisions per field, so
Timo Sirainen <tss@iki.fi>
parents: 2298
diff changeset
70 #include "ioloop.h"
2247
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
71 #include "mail-cache-private.h"
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
72
2327
7d02e2a7672d Header caching redesigned. New design allows caching decisions per field, so
Timo Sirainen <tss@iki.fi>
parents: 2298
diff changeset
73 void mail_cache_decision_lookup(struct mail_cache_view *view, uint32_t seq,
7d02e2a7672d Header caching redesigned. New design allows caching decisions per field, so
Timo Sirainen <tss@iki.fi>
parents: 2298
diff changeset
74 unsigned int field)
2247
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
75 {
2327
7d02e2a7672d Header caching redesigned. New design allows caching decisions per field, so
Timo Sirainen <tss@iki.fi>
parents: 2298
diff changeset
76 struct mail_cache *cache = view->cache;
2247
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
77 const struct mail_index_header *hdr;
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
78 uint32_t uid;
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
79
2327
7d02e2a7672d Header caching redesigned. New design allows caching decisions per field, so
Timo Sirainen <tss@iki.fi>
parents: 2298
diff changeset
80 i_assert(field < cache->fields_count);
7d02e2a7672d Header caching redesigned. New design allows caching decisions per field, so
Timo Sirainen <tss@iki.fi>
parents: 2298
diff changeset
81
2339
406692edc12d Cache fixes. Decisions are saved again.
Timo Sirainen <tss@iki.fi>
parents: 2327
diff changeset
82 if (cache->fields[field].field.decision != MAIL_CACHE_DECISION_TEMP) {
2247
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
83 /* a) forced decision
2327
7d02e2a7672d Header caching redesigned. New design allows caching decisions per field, so
Timo Sirainen <tss@iki.fi>
parents: 2298
diff changeset
84 b) not cached, mail_cache_decision_add() will handle this
2247
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
85 c) permanently cached already, okay. */
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
86 return;
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
87 }
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
88
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
89 /* see if we want to change decision from TEMP to YES */
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
90 if (mail_index_lookup_uid(view->view, seq, &uid) < 0 ||
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
91 mail_index_get_header(view->view, &hdr) < 0)
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
92 return;
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
93
2327
7d02e2a7672d Header caching redesigned. New design allows caching decisions per field, so
Timo Sirainen <tss@iki.fi>
parents: 2298
diff changeset
94 if (ioloop_time - cache->fields[field].last_used > 3600*24) {
7d02e2a7672d Header caching redesigned. New design allows caching decisions per field, so
Timo Sirainen <tss@iki.fi>
parents: 2298
diff changeset
95 /* update last_used about once a day */
2342
fa529dd77176 Fixes for big endian systems.
Timo Sirainen <tss@iki.fi>
parents: 2339
diff changeset
96 cache->fields[field].last_used = (uint32_t)ioloop_time;
2327
7d02e2a7672d Header caching redesigned. New design allows caching decisions per field, so
Timo Sirainen <tss@iki.fi>
parents: 2298
diff changeset
97 cache->field_header_write_pending = TRUE;
7d02e2a7672d Header caching redesigned. New design allows caching decisions per field, so
Timo Sirainen <tss@iki.fi>
parents: 2298
diff changeset
98 }
7d02e2a7672d Header caching redesigned. New design allows caching decisions per field, so
Timo Sirainen <tss@iki.fi>
parents: 2298
diff changeset
99
7d02e2a7672d Header caching redesigned. New design allows caching decisions per field, so
Timo Sirainen <tss@iki.fi>
parents: 2298
diff changeset
100 if (uid < cache->fields[field].uid_highwater ||
2247
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
101 uid < hdr->day_first_uid[7]) {
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
102 /* a) nonordered access within this session. if client doesn't
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
103 request messages in growing order, we assume it doesn't
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
104 have a permanent local cache.
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
105 b) accessing message older than one week. assume it's a
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
106 client with no local cache. if it was just a new client
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
107 generating the local cache for the first time, we'll
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
108 drop back to TEMP within few months. */
2339
406692edc12d Cache fixes. Decisions are saved again.
Timo Sirainen <tss@iki.fi>
parents: 2327
diff changeset
109 cache->fields[field].field.decision = MAIL_CACHE_DECISION_YES;
2327
7d02e2a7672d Header caching redesigned. New design allows caching decisions per field, so
Timo Sirainen <tss@iki.fi>
parents: 2298
diff changeset
110 cache->field_header_write_pending = TRUE;
2247
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
111 } else {
2327
7d02e2a7672d Header caching redesigned. New design allows caching decisions per field, so
Timo Sirainen <tss@iki.fi>
parents: 2298
diff changeset
112 cache->fields[field].uid_highwater = uid;
2247
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
113 }
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
114 }
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
115
2298
5beb0c20b6e8 Cache file fixes, API changes, etc. It's still in somewhat ugly state, but
Timo Sirainen <tss@iki.fi>
parents: 2275
diff changeset
116 void mail_cache_decision_add(struct mail_cache_view *view, uint32_t seq,
2327
7d02e2a7672d Header caching redesigned. New design allows caching decisions per field, so
Timo Sirainen <tss@iki.fi>
parents: 2298
diff changeset
117 unsigned int field)
2247
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
118 {
2327
7d02e2a7672d Header caching redesigned. New design allows caching decisions per field, so
Timo Sirainen <tss@iki.fi>
parents: 2298
diff changeset
119 struct mail_cache *cache = view->cache;
2247
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
120 uint32_t uid;
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
121
2327
7d02e2a7672d Header caching redesigned. New design allows caching decisions per field, so
Timo Sirainen <tss@iki.fi>
parents: 2298
diff changeset
122 i_assert(field < cache->fields_count);
7d02e2a7672d Header caching redesigned. New design allows caching decisions per field, so
Timo Sirainen <tss@iki.fi>
parents: 2298
diff changeset
123
7d02e2a7672d Header caching redesigned. New design allows caching decisions per field, so
Timo Sirainen <tss@iki.fi>
parents: 2298
diff changeset
124 if (MAIL_CACHE_IS_UNUSABLE(cache))
2275
c68a3c9f6d73 Cache file compression works now and compressed cache file is reopened.
Timo Sirainen <tss@iki.fi>
parents: 2259
diff changeset
125 return;
c68a3c9f6d73 Cache file compression works now and compressed cache file is reopened.
Timo Sirainen <tss@iki.fi>
parents: 2259
diff changeset
126
2339
406692edc12d Cache fixes. Decisions are saved again.
Timo Sirainen <tss@iki.fi>
parents: 2327
diff changeset
127 if (cache->fields[field].field.decision != MAIL_CACHE_DECISION_NO) {
2247
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
128 /* a) forced decision
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
129 b) we're already caching it, so it just wasn't in cache */
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
130 return;
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
131 }
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
132
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
133 /* field used the first time */
2339
406692edc12d Cache fixes. Decisions are saved again.
Timo Sirainen <tss@iki.fi>
parents: 2327
diff changeset
134 cache->fields[field].field.decision = MAIL_CACHE_DECISION_TEMP;
2327
7d02e2a7672d Header caching redesigned. New design allows caching decisions per field, so
Timo Sirainen <tss@iki.fi>
parents: 2298
diff changeset
135 cache->field_header_write_pending = TRUE;
2247
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
136
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
137 if (mail_index_lookup_uid(view->view, seq, &uid) == 0)
2327
7d02e2a7672d Header caching redesigned. New design allows caching decisions per field, so
Timo Sirainen <tss@iki.fi>
parents: 2298
diff changeset
138 cache->fields[field].uid_highwater = uid;
2247
2d51bb58a070 Added some smartness for deciding what to cache. Cache compression code compiles, but untested.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
139 }