# Gio::BufferedInputStream Class Reference
[Stream Classes]

The buffered input stream implements FilterInputStream and provides for buffered reads. More...

`#include <giomm/bufferedinputstream.h>`

Inheritance diagram for Gio::BufferedInputStream:
[legend]

List of all members.

## Public Member Functions

virtual | ~BufferedInputStream ()
GBufferedInputStream* | gobj ()
| Provides access to the underlying C GObject.
const GBufferedInputStream* | gobj () const
| Provides access to the underlying C GObject.
GBufferedInputStream* | gobj_copy ()
| Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs.
gsize | get_buffer_size () const
| Gets the size of the input buffer.
void | set_buffer_size (gsize size)
| Sets the size of the internal buffer of stream to size, or to the size of the contents of the buffer.
gsize | get_available () const
| Gets the size of the available data within the stream.
gsize | peek (void* buffer, gsize offset, gsize count) const
| Peeks in the buffer, copying data of size count into buffer, offset offset bytes.
const void* | peek_buffer (gsize&count) const
| Returns the buffer with the currently available bytes.
gssize | fill (gssize count, const Glib::RefPtr< Cancellable >& cancellable)
| Tries to read count bytes from the stream into the buffer.
gssize | fill (gssize count)
| non-cancellable version of fill()
void | fill_async (const SlotAsyncReady& slot, gssize count, const Glib::RefPtr< Cancellable >& cancellable, int io_priority=Glib::PRIORITY_DEFAULT)
| Reads data into the stream's buffer asynchronously, up to count size.
void | fill_async (const SlotAsyncReady& slot, gssize count, int io_priority=Glib::PRIORITY_DEFAULT)
| Reads data into the stream's buffer asynchronously, up to count size.
gssize | fill_finish (const Glib::RefPtr< AsyncResult >& result)
| Finishes an asynchronous read.
int | read_byte (const Glib::RefPtr< Cancellable >& cancellable)
| Tries to read a single byte from the stream or the buffer.
int | read_byte ()
| Non-cancellable version of read_byte().
Glib::PropertyProxy< guint > | property_buffer_size ()
| The size of the backend buffer.
Glib::PropertyProxy_ReadOnly < guint > | property_buffer_size () const
| The size of the backend buffer.

## Static Public Member Functions

static Glib::RefPtr < BufferedInputStream > | create (const Glib::RefPtr< InputStream >& base_stream)
static Glib::RefPtr < BufferedInputStream > | create_sized (const Glib::RefPtr< InputStream >& base_stream, gsize size)

## Protected Member Functions

| BufferedInputStream (const Glib::RefPtr< InputStream >& base_stream)
| BufferedInputStream (const Glib::RefPtr< InputStream >& base_stream, gsize size)

## Related Functions

(Note that these are not member functions.)
Glib::RefPtr < Gio::BufferedInputStream > | wrap (GBufferedInputStream* object, bool take_copy=false)
| A Glib::wrap() method for this object.

## Detailed Description

The buffered input stream implements FilterInputStream and provides for buffered reads.

By default, BufferedInputStream's buffer size is set at 4 kilobytes, but you can specify this to the constructor.

To get the size of a buffer within a buffered input stream, use get_buffer_size(). To change the size of a buffered input stream's buffer, use set_buffer_size(). Note that the buffer's size cannot be reduced below the size of the data within the buffer.

Since glibmm 2.16:

## Constructor & Destructor Documentation

virtual Gio::BufferedInputStream::~BufferedInputStream | ( |  | ) | `[virtual]`

Gio::BufferedInputStream::BufferedInputStream | ( | const Glib::RefPtr< InputStream >& | base_stream | ) | `[explicit, protected]`

Gio::BufferedInputStream::BufferedInputStream | ( | const Glib::RefPtr< InputStream >& | base_stream,
|  | gsize | size |
| ) |  |  | `[explicit, protected]`

## Member Function Documentation

static Glib::RefPtr<BufferedInputStream> Gio::BufferedInputStream::create | ( | const Glib::RefPtr< InputStream >& | base_stream | ) | `[static]`

Reimplemented in Gio::DataInputStream.

static Glib::RefPtr<BufferedInputStream> Gio::BufferedInputStream::create_sized | ( | const Glib::RefPtr< InputStream >& | base_stream,
|  | gsize | size |
| ) |  |  | `[static]`

gssize Gio::BufferedInputStream::fill | ( | gssize | count | ) |

non-cancellable version of fill()

gssize Gio::BufferedInputStream::fill | ( | gssize | count,
|  | const Glib::RefPtr< Cancellable >& | cancellable |
| ) |  |  |

Tries to read count bytes from the stream into the buffer.

Will block during this read.

If count is zero, returns zero and does nothing. A value of count larger than MAXSSIZE will cause a Gio::Error to be thrown, with INVALID_ARGUMENT.

On success, the number of bytes read into the buffer is returned. It is not an error if this is not the same as the requested size, as it can happen e.g. near the end of a file. Zero is returned on end of file (or if count is zero), but never otherwise.

The operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled, a Gio::Error will be thrown with CANCELLED. If an operation was partially finished when the operation was cancelled the partial result will be returned, without an error.

For the asynchronous, non-blocking, version of this function, see g_buffered_input_stream_fill_async().

Parameters:

  | count | The number of bytes that will be read from the stream.
  | cancellable | Cancellable object.

Returns:
  The number of bytes read into stream's buffer, up to count, or -1 on error.

void Gio::BufferedInputStream::fill_async | ( | const SlotAsyncReady & | slot,
|  | gssize | count,
|  | int | io_priority = `Glib::PRIORITY_DEFAULT` |
| ) |  |  |

Reads data into the stream's buffer asynchronously, up to count size.

io_priority can be used to prioritize reads. For the synchronous version of this function, see fill().

Parameters:

  | slot | A AsyncReadyCallback.
  | count | The number of bytes to read.
  | io_priority | the I/O priority of the request.

void Gio::BufferedInputStream::fill_async | ( | const SlotAsyncReady & | slot,
|  | gssize | count,
|  | const Glib::RefPtr< Cancellable >& | cancellable,
|  | int | io_priority = `Glib::PRIORITY_DEFAULT` |
| ) |  |  |

Reads data into the stream's buffer asynchronously, up to count size.

io_priority can be used to prioritize reads. For the synchronous version of this function, see fill().

Parameters:

  | slot | A AsyncReadyCallback.
  | count | The number of bytes to read.
  | cancellable | Cancellable object.
  | io_priority | the I/O priority of the request.

gssize Gio::BufferedInputStream::fill_finish | ( | const Glib::RefPtr< AsyncResult >& | result | ) |

Finishes an asynchronous read.

Parameters:

  | result | A AsyncResult.

Returns:
  A gssize of the read stream, or -1 on an error.

gsize Gio::BufferedInputStream::get_available | ( |  | ) | const

Gets the size of the available data within the stream.

Returns:
  Size of the available stream.

gsize Gio::BufferedInputStream::get_buffer_size | ( |  | ) | const

Gets the size of the input buffer.

Returns:
  The current buffer size.

const GBufferedInputStream* Gio::BufferedInputStream::gobj | ( |  | ) | const`[inline]`

Provides access to the underlying C GObject.

Reimplemented from Gio::FilterInputStream.

Reimplemented in Gio::DataInputStream.

GBufferedInputStream* Gio::BufferedInputStream::gobj | ( |  | ) | `[inline]`

Provides access to the underlying C GObject.

Reimplemented from Gio::FilterInputStream.

Reimplemented in Gio::DataInputStream.

GBufferedInputStream* Gio::BufferedInputStream::gobj_copy | ( |  | ) |

Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs.

Reimplemented from Gio::FilterInputStream.

Reimplemented in Gio::DataInputStream.

gsize Gio::BufferedInputStream::peek | ( | void * | buffer,
|  | gsize | offset,
|  | gsize | count |
| ) |  |  | const

Peeks in the buffer, copying data of size count into buffer, offset offset bytes.

Parameters:

  | buffer | A pointer to an allocated chunk of memory.
  | offset | A gsize.
  | count | A gsize.

Returns:
  A gsize of the number of bytes peeked, or -1 on error.

const void* Gio::BufferedInputStream::peek_buffer | ( | gsize & | count | ) | const

Returns the buffer with the currently available bytes.

The returned buffer must not be modified and will become invalid when reading from the stream or filling the buffer.

Parameters:

  | count | A gsize to get the number of bytes available in the buffer.

Returns:
  Read-only buffer.

Glib::PropertyProxy_ReadOnly<guint> Gio::BufferedInputStream::property_buffer_size | ( |  | ) | const

The size of the backend buffer.

You rarely need to use properties because there are get_ and set_ methods for almost all of them.

Returns:
  A PropertyProxy that allows you to get or set the property of the value, or receive notification when the value of the property changes.

Glib::PropertyProxy<guint> Gio::BufferedInputStream::property_buffer_size | ( |  | ) |

The size of the backend buffer.

You rarely need to use properties because there are get_ and set_ methods for almost all of them.

Returns:
  A PropertyProxy that allows you to get or set the property of the value, or receive notification when the value of the property changes.

int Gio::BufferedInputStream::read_byte | ( |  | ) |

Non-cancellable version of read_byte().

Reimplemented in Gio::DataInputStream.

int Gio::BufferedInputStream::read_byte | ( | const Glib::RefPtr< Cancellable >& | cancellable | ) |

Tries to read a single byte from the stream or the buffer.

Will block during this read.

On success, the byte read from the stream is returned. On end of stream -1 is returned but it's not an exceptional error and error is not set.

The operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled, a Gio::Error will be thrown with CANCELLED. If an operation was partially finished when the operation was cancelled the partial result will be returned, without an error.

Parameters:

  | cancellable | Cancellable object.

Returns:
  The byte read from the stream, or -1 on end of stream or error.

Reimplemented in Gio::DataInputStream.

void Gio::BufferedInputStream::set_buffer_size | ( | gsize | size | ) |

Sets the size of the internal buffer of stream to size, or to the size of the contents of the buffer.

The buffer can never be resized smaller than its current contents.

Parameters:

  | size | A gsize.

## Friends And Related Function Documentation

Glib::RefPtr< Gio::BufferedInputStream > wrap | ( | GBufferedInputStream * | object,
|  | bool | take_copy = `false` |
| ) |  |  | `[related]`

A Glib::wrap() method for this object.

Parameters:

  | object | The C instance.
  | take_copy | False if the result should take ownership of the C instance. True if it should take a new copy or ref.

Returns:
  A C++ instance that wraps this C instance.