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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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