blob: e5ba68be3248e0e448d24bb42b35cd74315c5033 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#ifndef ISTREAM_CHAIN_H
#define ISTREAM_CHAIN_H
struct istream_chain;
/* Flexibly couple input streams into a single chain stream. Input streams can
be added after creation of the chain stream, and the chain stream will not
signal EOF until all streams are read to EOF and the last stream added was
NULL. Streams that were finished to EOF are unreferenced. The chain stream
is obviously not seekable and it has no determinable size. The chain_r
argument returns a pointer to the chain object. */
struct istream *i_stream_create_chain(struct istream_chain **chain_r,
size_t max_buffer_size);
/* Append an input stream to the chain. */
void i_stream_chain_append(struct istream_chain *chain, struct istream *stream);
/* Mark the end of the chain. Only then reads from the chain stream can
return EOF. */
void i_stream_chain_append_eof(struct istream_chain *chain);
#endif
|