Mercurial > dovecot > core-2.2
annotate src/lib/istream-sized.h @ 22955:812e5c961328
fts: Indexing virtual mailbox didn't always index the last mails
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Thu, 03 May 2018 18:33:00 +0300 |
parents | bc16d43aed49 |
children |
rev | line source |
---|---|
14692
9774ae8fff97
Renamed istream-attachment to istream-sized.
Timo Sirainen <tss@iki.fi>
parents:
12312
diff
changeset
|
1 #ifndef ISTREAM_SIZED_H |
9774ae8fff97
Renamed istream-attachment to istream-sized.
Timo Sirainen <tss@iki.fi>
parents:
12312
diff
changeset
|
2 #define ISTREAM_SIZED_H |
12312
28eaaa23f2c6
lib-storage: Added support for saving mail attachments separately via filesystem API.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
3 |
19239
5fa5cbdf65a3
lib: Added i_stream_create_sized_with_callback(). The callback returns the wanted error string.
Timo Sirainen <tss@iki.fi>
parents:
14844
diff
changeset
|
4 struct istream_sized_error_data { |
5fa5cbdf65a3
lib: Added i_stream_create_sized_with_callback(). The callback returns the wanted error string.
Timo Sirainen <tss@iki.fi>
parents:
14844
diff
changeset
|
5 /* Stream's current v_offset */ |
5fa5cbdf65a3
lib: Added i_stream_create_sized_with_callback(). The callback returns the wanted error string.
Timo Sirainen <tss@iki.fi>
parents:
14844
diff
changeset
|
6 uoff_t v_offset; |
5fa5cbdf65a3
lib: Added i_stream_create_sized_with_callback(). The callback returns the wanted error string.
Timo Sirainen <tss@iki.fi>
parents:
14844
diff
changeset
|
7 /* How many more bytes are being added within this read() */ |
5fa5cbdf65a3
lib: Added i_stream_create_sized_with_callback(). The callback returns the wanted error string.
Timo Sirainen <tss@iki.fi>
parents:
14844
diff
changeset
|
8 size_t new_bytes; |
5fa5cbdf65a3
lib: Added i_stream_create_sized_with_callback(). The callback returns the wanted error string.
Timo Sirainen <tss@iki.fi>
parents:
14844
diff
changeset
|
9 /* What's the original wanted size. */ |
5fa5cbdf65a3
lib: Added i_stream_create_sized_with_callback(). The callback returns the wanted error string.
Timo Sirainen <tss@iki.fi>
parents:
14844
diff
changeset
|
10 uoff_t wanted_size; |
5fa5cbdf65a3
lib: Added i_stream_create_sized_with_callback(). The callback returns the wanted error string.
Timo Sirainen <tss@iki.fi>
parents:
14844
diff
changeset
|
11 /* TRUE if we're at EOF now */ |
5fa5cbdf65a3
lib: Added i_stream_create_sized_with_callback(). The callback returns the wanted error string.
Timo Sirainen <tss@iki.fi>
parents:
14844
diff
changeset
|
12 bool eof; |
5fa5cbdf65a3
lib: Added i_stream_create_sized_with_callback(). The callback returns the wanted error string.
Timo Sirainen <tss@iki.fi>
parents:
14844
diff
changeset
|
13 }; |
5fa5cbdf65a3
lib: Added i_stream_create_sized_with_callback(). The callback returns the wanted error string.
Timo Sirainen <tss@iki.fi>
parents:
14844
diff
changeset
|
14 |
5fa5cbdf65a3
lib: Added i_stream_create_sized_with_callback(). The callback returns the wanted error string.
Timo Sirainen <tss@iki.fi>
parents:
14844
diff
changeset
|
15 typedef const char * |
5fa5cbdf65a3
lib: Added i_stream_create_sized_with_callback(). The callback returns the wanted error string.
Timo Sirainen <tss@iki.fi>
parents:
14844
diff
changeset
|
16 istream_sized_callback_t(const struct istream_sized_error_data *data, |
5fa5cbdf65a3
lib: Added i_stream_create_sized_with_callback(). The callback returns the wanted error string.
Timo Sirainen <tss@iki.fi>
parents:
14844
diff
changeset
|
17 void *context); |
5fa5cbdf65a3
lib: Added i_stream_create_sized_with_callback(). The callback returns the wanted error string.
Timo Sirainen <tss@iki.fi>
parents:
14844
diff
changeset
|
18 |
21685
5eb922a4fdf6
lib: istream-sized - set stream_errno=EPIPE if stream is too small
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
21681
diff
changeset
|
19 /* Assume that input stream is exactly the given size. If the stream is too |
5eb922a4fdf6
lib: istream-sized - set stream_errno=EPIPE if stream is too small
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
21681
diff
changeset
|
20 small, fail with stream_errno=EPIPE. If stream is too large, fail with |
5eb922a4fdf6
lib: istream-sized - set stream_errno=EPIPE if stream is too small
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
21681
diff
changeset
|
21 stream_errno=EINVAL. */ |
14692
9774ae8fff97
Renamed istream-attachment to istream-sized.
Timo Sirainen <tss@iki.fi>
parents:
12312
diff
changeset
|
22 struct istream *i_stream_create_sized(struct istream *input, uoff_t size); |
21681
9ef9988619b7
lib: Added i_stream_create_sized_range()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19239
diff
changeset
|
23 struct istream *i_stream_create_sized_range(struct istream *input, |
9ef9988619b7
lib: Added i_stream_create_sized_range()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19239
diff
changeset
|
24 uoff_t offset, uoff_t size); |
21687
bc16d43aed49
lib: Added i_stream_create_min_sized*()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
21685
diff
changeset
|
25 /* Like i_stream_create_sized*(), but allow input stream's size to be larger. */ |
bc16d43aed49
lib: Added i_stream_create_min_sized*()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
21685
diff
changeset
|
26 struct istream *i_stream_create_min_sized(struct istream *input, uoff_t min_size); |
bc16d43aed49
lib: Added i_stream_create_min_sized*()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
21685
diff
changeset
|
27 struct istream *i_stream_create_min_sized_range(struct istream *input, |
bc16d43aed49
lib: Added i_stream_create_min_sized*()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
21685
diff
changeset
|
28 uoff_t offset, uoff_t min_size); |
19239
5fa5cbdf65a3
lib: Added i_stream_create_sized_with_callback(). The callback returns the wanted error string.
Timo Sirainen <tss@iki.fi>
parents:
14844
diff
changeset
|
29 /* Same as i_stream_create_sized(), but set the error message via the |
5fa5cbdf65a3
lib: Added i_stream_create_sized_with_callback(). The callback returns the wanted error string.
Timo Sirainen <tss@iki.fi>
parents:
14844
diff
changeset
|
30 callback. */ |
5fa5cbdf65a3
lib: Added i_stream_create_sized_with_callback(). The callback returns the wanted error string.
Timo Sirainen <tss@iki.fi>
parents:
14844
diff
changeset
|
31 struct istream * |
5fa5cbdf65a3
lib: Added i_stream_create_sized_with_callback(). The callback returns the wanted error string.
Timo Sirainen <tss@iki.fi>
parents:
14844
diff
changeset
|
32 i_stream_create_sized_with_callback(struct istream *input, uoff_t size, |
5fa5cbdf65a3
lib: Added i_stream_create_sized_with_callback(). The callback returns the wanted error string.
Timo Sirainen <tss@iki.fi>
parents:
14844
diff
changeset
|
33 istream_sized_callback_t *error_callback, |
5fa5cbdf65a3
lib: Added i_stream_create_sized_with_callback(). The callback returns the wanted error string.
Timo Sirainen <tss@iki.fi>
parents:
14844
diff
changeset
|
34 void *context); |
5fa5cbdf65a3
lib: Added i_stream_create_sized_with_callback(). The callback returns the wanted error string.
Timo Sirainen <tss@iki.fi>
parents:
14844
diff
changeset
|
35 #define i_stream_create_sized_with_callback(input, size, error_callback, context) \ |
5fa5cbdf65a3
lib: Added i_stream_create_sized_with_callback(). The callback returns the wanted error string.
Timo Sirainen <tss@iki.fi>
parents:
14844
diff
changeset
|
36 i_stream_create_sized_with_callback(input, size + \ |
5fa5cbdf65a3
lib: Added i_stream_create_sized_with_callback(). The callback returns the wanted error string.
Timo Sirainen <tss@iki.fi>
parents:
14844
diff
changeset
|
37 CALLBACK_TYPECHECK(error_callback, \ |
5fa5cbdf65a3
lib: Added i_stream_create_sized_with_callback(). The callback returns the wanted error string.
Timo Sirainen <tss@iki.fi>
parents:
14844
diff
changeset
|
38 const char *(*)(const struct istream_sized_error_data *, typeof(context))), \ |
5fa5cbdf65a3
lib: Added i_stream_create_sized_with_callback(). The callback returns the wanted error string.
Timo Sirainen <tss@iki.fi>
parents:
14844
diff
changeset
|
39 (istream_sized_callback_t *)error_callback, context) |
12312
28eaaa23f2c6
lib-storage: Added support for saving mail attachments separately via filesystem API.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
40 |
28eaaa23f2c6
lib-storage: Added support for saving mail attachments separately via filesystem API.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
41 #endif |