/*
* Copyright (c) 2014, cPanel, Inc.
* All rights reserved.
* http://cpanel.net/
*
* This is free software; you can redistribute it and/or modify it under the
* same terms as Perl itself. See the Perl manual section 'perlartistic' for
* further information.
*/
#ifndef _B_BUFFER_H
#define _B_BUFFER_H
#define B_BUFFER_DEFAULT_FACTOR 20
#define B_BUFFER_BLOCK_SIZE 512
#include <sys/types.h>
typedef struct _b_buffer {
int fd;
int can_splice;
size_t size;
size_t unused;
void * data;
} b_buffer;
b_buffer * b_buffer_new(size_t factor);
int b_buffer_get_fd(b_buffer *buf);
void b_buffer_set_fd(b_buffer *buf, int fd);
size_t b_buffer_size(b_buffer *buf);
size_t b_buffer_unused(b_buffer *buf);
int b_buffer_full(b_buffer *buf);
off_t b_buffer_reclaim(b_buffer *buf, size_t used, size_t given);
void * b_buffer_get_block(b_buffer *buf, size_t len, off_t *given);
ssize_t b_buffer_flush(b_buffer *buf);
void b_buffer_reset(b_buffer *buf);
void b_buffer_destroy(b_buffer *buf);
#endif /* _B_BUFFER_H */