23 #include <drizzled/internal/my_sys.h>
28 #define my_b_EOF INT_MIN
44 unsigned char *read_pos;
46 unsigned char *read_end;
47 unsigned char *buffer;
49 unsigned char *request_pos;
52 unsigned char *write_buffer;
59 unsigned char *append_read_pos;
61 unsigned char *write_pos;
63 unsigned char *write_end;
71 unsigned char **current_pos, **current_end;
80 int (*read_function)(
io_cache_st* ,
unsigned char *,size_t);
85 int (*write_function)(
io_cache_st* ,
const unsigned char *,size_t);
100 IO_CACHE_CALLBACK pre_read;
101 IO_CACHE_CALLBACK post_read;
102 IO_CACHE_CALLBACK pre_close;
116 size_t buffer_length;
161 int block_write(
const void*,
size_t, my_off_t);
162 void close_cached_file();
163 bool real_open_cached_file();
165 int init_io_cache(
int file,
size_t cachesize, cache_type type, my_off_t seek_offset,
bool use_async_io, myf cache_myflags);
166 void init_functions();
168 bool reinit_io_cache(cache_type type_arg, my_off_t seek_offset,
bool use_async_io,
bool clear_cache);
170 bool open_cached_file(
const char *dir,
const char *prefix,
size_t cache_size, myf cache_myflags);
171 int flush(
int need_append_buffer_lock= 1);
183 my_off_t tell()
const
185 return pos_in_file + *current_pos - request_pos;
188 int read(
void* Buffer0,
size_t Count)
190 unsigned char* Buffer=
reinterpret_cast<unsigned char*
>(Buffer0);
191 if (read_pos + Count > read_end)
192 return read_function(
this, Buffer, Count);
193 memcpy(Buffer, read_pos, Count);
198 int write(
const void* Buffer0,
size_t Count)
200 const unsigned char* Buffer=
reinterpret_cast<const unsigned char*
>(Buffer0);
201 if (write_pos + Count > write_end)
202 return write_function(
this, Buffer, Count);
203 memcpy(write_pos, Buffer, Count);
TODO: Rename this file - func.h is stupid.
int init_io_cache(int file, size_t cachesize, cache_type type, my_off_t seek_offset, bool use_async_io, myf cache_myflags)
Initialize an io_cache_st object.
int end_io_cache()
Free an io_cache_st object.
bool reinit_io_cache(cache_type type_arg, my_off_t seek_offset, bool use_async_io, bool clear_cache)
Reset the cache.
void setup_io_cache()
Setup internal pointers inside io_cache_st.