istream-internal.h [plain text]
#ifndef ISTREAM_INTERNAL_H
#define ISTREAM_INTERNAL_H
#include "istream.h"
#include "iostream-internal.h"
#define I_STREAM_MIN_SIZE IO_BLOCK_SIZE
struct istream_private {
struct iostream_private iostream;
ssize_t (*read)(struct istream_private *stream);
void (*seek)(struct istream_private *stream,
uoff_t v_offset, bool mark);
void (*sync)(struct istream_private *stream);
const struct stat *(*stat)(struct istream_private *stream, bool exact);
int (*get_size)(struct istream_private *stream, bool exact, uoff_t *size_r);
struct istream istream;
int fd;
uoff_t abs_start_offset;
struct stat statbuf;
const unsigned char *buffer;
unsigned char *w_buffer;
size_t buffer_size, max_buffer_size, init_buffer_size;
size_t skip, pos;
struct istream *parent;
uoff_t parent_start_offset;
uoff_t parent_expected_offset;
unsigned int access_counter;
string_t *line_str;
unsigned int return_nolf_line:1;
};
struct istream *
i_stream_create(struct istream_private *stream, struct istream *parent, int fd);
void i_stream_compress(struct istream_private *stream);
void i_stream_grow_buffer(struct istream_private *stream, size_t bytes);
bool i_stream_get_buffer_space(struct istream_private *stream,
size_t wanted_size, size_t *size_r);
ssize_t i_stream_read_copy_from_parent(struct istream *istream);
void i_stream_default_seek(struct istream_private *stream,
uoff_t v_offset, bool mark);
#endif