istream-private.h revision 439dd06aec3301e65d650f6dc1d4a1a00b356b4f
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen/* inheritance: */
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen/* methods: */
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen ssize_t (*read)(struct istream_private *stream);
a2f250a332dfc1e6cd4ffd196c621eb9dbf7b8a1Timo Sirainen int (*stat)(struct istream_private *stream, bool exact);
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen int (*get_size)(struct istream_private *stream, bool exact, uoff_t *size_r);
d6badc27cd6e8d3398877b6766cb0aaeef3a7800Timo Sirainen const unsigned char *buffer;
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen size_t buffer_size, max_buffer_size, init_buffer_size;
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen struct istream *parent; /* for filter streams */
024815ea2ffdda9ea79919f18e865663977f73eaTimo Sirainen /* parent stream's expected offset is kept here. i_stream_read()
8fa41238067c854435884c459963fde6f8c6436bTimo Sirainen always seeks parent stream to here before calling read(). */
91dca97b367c54a139c268b56a0c67f564bd9197Timo Sirainen /* increased every time the stream is changed (e.g. seek, read).
46c31f64b9f0949f00b7819f45b22f2d64b2ea27Timo Sirainen this way streams can check if their parent streams have been
46c31f64b9f0949f00b7819f45b22f2d64b2ea27Timo Sirainen accessed behind them. */
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen string_t *line_str; /* for i_stream_next_line() if w_buffer == NULL */
5aeb15e5817fbd4b1d8de540aa7673e3819a8030Timo Sirainen unsigned int stream_size_passthrough:1; /* stream is parent's size */
bb10ebcf076c959c752f583746d83805d7686df8Timo Siraineni_stream_create(struct istream_private *stream, struct istream *parent, int fd)
2a6af811ea3de3cf9e2f15e446674dd21b0705f3Timo Sirainenvoid i_stream_compress(struct istream_private *stream);
a2f250a332dfc1e6cd4ffd196c621eb9dbf7b8a1Timo Sirainenvoid i_stream_grow_buffer(struct istream_private *stream, size_t bytes);
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Siraineni_stream_try_alloc(struct istream_private *stream,
d5cebe7f98e63d4e2822863ef2faa4971e8b3a5dTimo Sirainenvoid *i_stream_alloc(struct istream_private *stream, size_t size);
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainenssize_t i_stream_read_copy_from_parent(struct istream *istream);