BIO_F_BUFFER(3) OpenSSL BIO_F_BUFFER(3)NAME
BIO_f_buffer - buffering BIO
SYNOPSIS
#include <openssl/bio.h>
BIO_METHOD * BIO_f_buffer(void);
#define BIO_get_buffer_num_lines(b) BIO_ctrl(b,BIO_C_GET_BUFF_NUM_LINES,0,NULL)
#define BIO_set_read_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,0)
#define BIO_set_write_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,1)
#define BIO_set_buffer_size(b,size) BIO_ctrl(b,BIO_C_SET_BUFF_SIZE,size,NULL)
#define BIO_set_buffer_read_data(b,buf,num) BIO_ctrl(b,BIO_C_SET_BUFF_READ_DATA,num,buf)
DESCRIPTIONBIO_f_buffer() returns the buffering BIO method.
Data written to a buffering BIO is buffered and periodically
written to the next BIO in the chain. Data read from a
buffering BIO comes from an internal buffer which is filled
from the next BIO in the chain. Both BIO_gets() and
BIO_puts() are supported.
Calling BIO_reset() on a buffering BIO clears any buffered
data.
BIO_get_buffer_num_lines() returns the number of lines
currently buffered.
BIO_set_read_buffer_size(), BIO_set_write_buffer_size() and
BIO_set_buffer_size() set the read, write or both read and
write buffer sizes to size. The initial buffer size is
DEFAULT_BUFFER_SIZE, currently 1024. Any attempt to reduce
the buffer size below DEFAULT_BUFFER_SIZE is ignored. Any
buffered data is cleared when the buffer is resized.
BIO_set_buffer_read_data() clears the read buffer and fills
it with num bytes of buf. If num is larger than the current
buffer size the buffer is expanded.
NOTES
Buffering BIOs implement BIO_gets() by using BIO_read()
operations on the next BIO in the chain. By prepending a
buffering BIO to a chain it is therefore possible to provide
BIO_gets() functionality if the following BIOs do not sup-
port it (for example SSL BIOs).
Data is only written to the next BIO in the chain when the
write buffer fills or when BIO_flush() is called. It is
therefore important to call BIO_flush() whenever any pending
data should be written such as when removing a buffering BIO
using BIO_pop(). BIO_flush() may need to be retried if the
MirOS BSD #10-current 2005-02-05 1
BIO_F_BUFFER(3) OpenSSL BIO_F_BUFFER(3)
ultimate source/sink BIO is non blocking.
RETURN VALUESBIO_f_buffer() returns the buffering BIO method.
BIO_get_buffer_num_lines() returns the number of lines buf-
fered (may be 0).
BIO_set_read_buffer_size(), BIO_set_write_buffer_size() and
BIO_set_buffer_size() return 1 if the buffer was success-
fully resized or 0 for failure.
BIO_set_buffer_read_data() returns 1 if the data was set
correctly or 0 if there was an error.
SEE ALSO
TBA
MirOS BSD #10-current 2005-02-05 2