glibmm 2.56.0

Public Member Functions | Static Public Member Functions | Protected Member Functions | Related Functions | List of all members
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]

## Public Member Functions
| BufferedInputStream (BufferedInputStream&& src) noexcept
BufferedInputStream& | operator= (BufferedInputStream&& src) noexcept
| ~BufferedInputStream () noexcept override
GBufferedInputStream* | gobj ()
| Provides access to the underlying C GObject. More...
const GBufferedInputStream* | gobj () const
| Provides access to the underlying C GObject. More...
GBufferedInputStream* | gobj_copy ()
| Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs. More...
gsize | get_buffer_size () const
| Gets the size of the input buffer. More...
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. More...
gsize | get_available () const
| Gets the size of the available data within the stream. More...
gsize | peek (void* buffer, gsize offset, gsize count) const
| Peeks in the buffer, copying data of size count into buffer, offset offset bytes. More...
const void* | peek_buffer (gsize&count) const
| Returns the buffer with the currently available bytes. More...
gssize | fill (gssize count, const Glib::RefPtr< Cancellable >& cancellable)
| Tries to read count bytes from the stream into the buffer. More...
gssize | fill (gssize count)
| A fill() convenience overload. More...
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. More...
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. More...
gssize | fill_finish (const Glib::RefPtr< AsyncResult >& result)
| Finishes an asynchronous read. More...
int | read_byte (const Glib::RefPtr< Cancellable >& cancellable)
| Tries to read a single byte from the stream or the buffer. More...
int | read_byte ()
| A read_byte() convenience overload. More...
Glib::PropertyProxy< guint > | property_buffer_size ()
| The size of the backend buffer. More...
Glib::PropertyProxy_ReadOnly< guint > | property_buffer_size () const
| The size of the backend buffer. More...
Public Member Functions inherited from Gio::FilterInputStream
| FilterInputStream (FilterInputStream&& src) noexcept
FilterInputStream& | operator= (FilterInputStream&& src) noexcept
| ~FilterInputStream () noexcept override
GFilterInputStream* | gobj ()
| Provides access to the underlying C GObject. More...
const GFilterInputStream* | gobj () const
| Provides access to the underlying C GObject. More...
GFilterInputStream* | gobj_copy ()
| Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs. More...
Glib::RefPtr< InputStream > | get_base_stream ()
| Gets the base stream for the filter stream. More...
Glib::RefPtr< const InputStream > | get_base_stream () const
| Gets the base stream for the filter stream. More...
bool | get_close_base_stream () const
| Returns whether the base stream will be closed when stream is closed. More...
void | set_close_base_stream (bool close_base=true)
| Sets whether the base stream will be closed when stream is closed. More...
Glib::PropertyProxy_ReadOnly< Glib::RefPtr< InputStream > > | property_base_stream () const
| The underlying base stream on which the io ops will be done. More...
Glib::PropertyProxy< bool > | property_close_base_stream ()
| If the base stream should be closed when the filter stream is closed. More...
Glib::PropertyProxy_ReadOnly< bool > | property_close_base_stream () const
| If the base stream should be closed when the filter stream is closed. More...
Public Member Functions inherited from Gio::InputStream
| InputStream (InputStream&& src) noexcept
InputStream& | operator= (InputStream&& src) noexcept
| ~InputStream () noexcept override
GInputStream* | gobj ()
| Provides access to the underlying C GObject. More...
const GInputStream* | gobj () const
| Provides access to the underlying C GObject. More...
GInputStream* | gobj_copy ()
| Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs. More...
gssize | read (void* buffer, gsize count, const Glib::RefPtr< Cancellable >& cancellable)
| Tries to read count bytes from the stream into the buffer starting at buffer. More...
gssize | read (void* buffer, gsize count)
| A read() convenience overload. More...
bool | read_all (void* buffer, gsize count, gsize& bytes_read, const Glib::RefPtr< Cancellable >& cancellable)
| Tries to read count bytes from the stream into the buffer starting at buffer. More...
bool | read_all (void* buffer, gsize count, gsize& bytes_read)
| A read_all() convenience overload. More...
Glib::RefPtr< Glib::Bytes > | read_bytes (gsize count, const Glib::RefPtr< Cancellable >& cancellable)
| Like g_input_stream_read(), this tries to read count bytes from the stream in a blocking fashion. More...
void | read_bytes_async (gsize count, const SlotAsyncReady& slot, const Glib::RefPtr< Cancellable >& cancellable, int io_priority=Glib::PRIORITY_DEFAULT)
| Request an asynchronous read of count bytes from the stream into a new Glib::Bytes. More...
void | read_bytes_async (gsize count, const SlotAsyncReady& slot, int io_priority=Glib::PRIORITY_DEFAULT)
| Request an asynchronous read of count bytes from the stream into a new Glib::Bytes. More...
Glib::RefPtr< Glib::Bytes > | read_bytes_finish (const Glib::RefPtr< AsyncResult >& result)
| Finishes an asynchronous stream read-into-Bytes operation. More...
gssize | skip (gsize count, const Glib::RefPtr< Cancellable >& cancellable)
| Tries to skip count bytes from the stream. More...
gssize | skip (gsize count)
| A skip() convenience overload. More...
bool | close (const Glib::RefPtr< Cancellable >& cancellable)
| Closes the stream, releasing resources related to it. More...
bool | close ()
| A close() convenience overload. More...
void | read_async (void* buffer, gsize count, const SlotAsyncReady& slot, const Glib::RefPtr< Cancellable >& cancellable, int io_priority=Glib::PRIORITY_DEFAULT)
| Request an asynchronous read of count bytes from the stream into the buffer starting at buffer. More...
void | read_async (void* buffer, gsize count, const SlotAsyncReady& slot, int io_priority=Glib::PRIORITY_DEFAULT)
| Request an asynchronous read of count bytes from the stream into the buffer starting at buffer. More...
gssize | read_finish (const Glib::RefPtr< AsyncResult >& result)
| Finishes an asynchronous stream read operation. More...
void | read_all_async (void* buffer, gsize count, const SlotAsyncReady& slot, const Glib::RefPtr< Cancellable >& cancellable, int io_priority=Glib::PRIORITY_DEFAULT)
| Request an asynchronous read of count bytes from the stream into the buffer starting at buffer. More...
void | read_all_async (void* buffer, gsize count, const SlotAsyncReady& slot, int io_priority=Glib::PRIORITY_DEFAULT)
| Request an asynchronous read of count bytes from the stream into the buffer starting at buffer. More...
bool | read_all_finish (const Glib::RefPtr< AsyncResult >& result, gsize& bytes_read)
| Finishes an asynchronous stream read operation started with g_input_stream_read_all_async(). More...
void | skip_async (gsize count, const SlotAsyncReady& slot, const Glib::RefPtr< Cancellable >& cancellable, int io_priority=Glib::PRIORITY_DEFAULT)
| Request an asynchronous skip of count bytes from the stream into the buffer starting at buffer. More...
void | skip_async (gsize count, const SlotAsyncReady& slot, int io_priority=Glib::PRIORITY_DEFAULT)
| Request an asynchronous skip of count bytes from the stream into the buffer starting at buffer. More...
gssize | skip_finish (const Glib::RefPtr< AsyncResult >& result)
| Finishes a stream skip operation. More...
void | close_async (const SlotAsyncReady& slot, const Glib::RefPtr< Cancellable >& cancellable, int io_priority=Glib::PRIORITY_DEFAULT)
| Requests an asynchronous closes of the stream, releasing resources related to it. More...
void | close_async (const SlotAsyncReady& slot, int io_priority=Glib::PRIORITY_DEFAULT)
| Requests an asynchronous closes of the stream, releasing resources related to it. More...
gboolean | close_finish (const Glib::RefPtr< AsyncResult >& result)
| Finishes closing a stream asynchronously, started from g_input_stream_close_async(). More...
bool | is_closed () const
| Checks if an input stream is closed. More...
bool | has_pending () const
| Checks if an input stream has pending actions. More...
Public Member Functions inherited from Glib::Object
| Object (const Object&)=delete
Object& | operator= (const Object&)=delete
| Object (Object&& src) noexcept
Object& | operator= (Object&& src) noexcept
void* | get_data (const QueryQuark& key)
void | set_data (const Quark& key, void* data)
void | set_data (const Quark& key, void* data, DestroyNotify notify)
void | remove_data (const QueryQuark& quark)
void* | steal_data (const QueryQuark& quark)
Public Member Functions inherited from Glib::ObjectBase
| ObjectBase (const ObjectBase&)=delete
ObjectBase& | operator= (const ObjectBase&)=delete
void | set_property_value (const Glib::ustring& property_name, const Glib::ValueBase& value)
| You probably want to use a specific property_*() accessor method instead. More...
void | get_property_value (const Glib::ustring& property_name, Glib::ValueBase& value) const
| You probably want to use a specific property_*() accessor method instead. More...
template<class PropertyType >
void | set_property (const Glib::ustring& property_name, const PropertyType& value)
| You probably want to use a specific property_*() accessor method instead. More...
template<class PropertyType >
void | get_property (const Glib::ustring& property_name, PropertyType& value) const
| You probably want to use a specific property_*() accessor method instead. More...
void | connect_property_changed (const Glib::ustring& property_name, const sigc::slot< void >& slot)
| You can use the signal_changed() signal of the property proxy instead. More...
void | connect_property_changed (const Glib::ustring& property_name, sigc::slot< void >&& slot)
| You can use the signal_changed() signal of the property proxy instead. More...
sigc::connection | connect_property_changed_with_return (const Glib::ustring& property_name, const sigc::slot< void >& slot)
| You can use the signal_changed() signal of the property proxy instead. More...
sigc::connection | connect_property_changed_with_return (const Glib::ustring& property_name, sigc::slot< void >&& slot)
| You can use the signal_changed() signal of the property proxy instead. More...
void | freeze_notify ()
| Increases the freeze count on object. More...
void | thaw_notify ()
| Reverts the effect of a previous call to freeze_notify(). More...
virtual void | reference () const
| Increment the reference count for this object. More...
virtual void | unreference () const
| Decrement the reference count for this object. More...
GObject* | gobj ()
| Provides access to the underlying C GObject. More...
const GObject* | gobj () const
| Provides access to the underlying C GObject. More...
GObject* | gobj_copy () const
| Give a ref-ed copy to someone. Use for direct struct access. More...
Public Member Functions inherited from sigc::trackable
| trackable () noexcept
| trackable (const trackable &src) noexcept
| trackable (trackable &&src)
| ~trackable ()
void | add_destroy_notify_callback (void *data, func_destroy_notify func) const
void | notify_callbacks ()
trackable & | operator= (const trackable &src)
trackable & | operator= (trackable &&src)
void | remove_destroy_notify_callback (void *data) const

## Static Public Member Functions
static GType | get_type ()
| Get the GType for this class, for use with the underlying GObject type system. More...
static Glib::RefPtr< BufferedInputStream > | create (const Glib::RefPtr< InputStream >& base_stream)
| Creates a new InputStream from the given base_stream, with a buffer set to the default size (4 kilobytes). More...
static Glib::RefPtr< BufferedInputStream > | create_sized (const Glib::RefPtr< InputStream >& base_stream, gsize buffer_size)
| Creates a new InputStream from the given base_stream, with a buffer set to size. More...
Static Public Member Functions inherited from Gio::FilterInputStream
static GType | get_type ()
| Get the GType for this class, for use with the underlying GObject type system. More...
Static Public Member Functions inherited from Gio::InputStream
static GType | get_type ()
| Get the GType for this class, for use with the underlying GObject type system. More...

## Protected Member Functions
| BufferedInputStream (const Glib::RefPtr< InputStream >& base_stream)
| BufferedInputStream (const Glib::RefPtr< InputStream >& base_stream, gsize buffer_size)
Protected Member Functions inherited from Gio::FilterInputStream
| FilterInputStream (const Glib::RefPtr< InputStream >& base_stream)
Protected Member Functions inherited from Gio::InputStream
| InputStream ()
bool | set_pending ()
| Sets stream to have actions pending. More...
void | clear_pending ()
| Clears the pending flag on stream. More...
Protected Member Functions inherited from Glib::Object
| Object ()
| Object (const Glib::ConstructParams& construct_params)
| Object (GObject* castitem)
| ~Object () noexcept override
Protected Member Functions inherited from Glib::ObjectBase
| ObjectBase ()
| This default constructor is called implicitly from the constructor of user-derived classes, even if, for instance, Gtk::Button calls a different ObjectBase constructor. More...
| ObjectBase (const char* custom_type_name)
| A derived constructor always overrides this choice. More...
| ObjectBase (const std::type_info& custom_type_info)
| This constructor is a special feature to allow creation of derived types on the fly, without having to use g_object_new() manually. More...
| ObjectBase (ObjectBase&& src) noexcept
ObjectBase& | operator= (ObjectBase&& src) noexcept
virtual | ~ObjectBase () noexcept=0
void | initialize (GObject* castitem)
void | initialize_move (GObject* castitem, Glib::ObjectBase* previous_wrapper)

## 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. More...
Related Functions inherited from Gio::FilterInputStream
Glib::RefPtr< Gio::FilterInputStream > | wrap (GFilterInputStream* object, bool take_copy=false)
| A Glib::wrap() method for this object. More...
Related Functions inherited from Gio::InputStream
Glib::RefPtr< Gio::InputStream > | wrap (GInputStream* object, bool take_copy=false)
| A Glib::wrap() method for this object. More...
Related Functions inherited from Glib::Object
Glib::RefPtr< Glib::Object > | wrap (GObject* object, bool take_copy=false)

## Additional Inherited Members
Public Types inherited from Glib::Object
using | DestroyNotify = void(*)(gpointer data)
Public Types inherited from sigc::trackable
typedef internal::func_destroy_notify | func_destroy_notify

## 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

## ◆ BufferedInputStream() [1/3]

Gio::BufferedInputStream::BufferedInputStream | ( | BufferedInputStream&& | src | ) |
| noexcept

## ◆ ~BufferedInputStream()

Gio::BufferedInputStream::~BufferedInputStream | ( |  | ) |
| override noexcept

## ◆ BufferedInputStream() [2/3]

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

## ◆ BufferedInputStream() [3/3]

Gio::BufferedInputStream::BufferedInputStream | ( | const Glib::RefPtr< InputStream >& | base_stream,
|  | gsize | buffer_size
| ) |  |
| explicit protected

## Member Function Documentation

## ◆ create()

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

Creates a new InputStream from the given base_stream, with a buffer set to the default size (4 kilobytes).

Parameters

  base_stream | An InputStream.

Returns
  an InputStream for the given base_stream.

## ◆ create_sized()

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

Creates a new InputStream from the given base_stream, with a buffer set to size.

Parameters

  base_stream | An InputStream.
  buffer_size | A size.

Returns
  an InputStream for the given base_stream.

## ◆ fill() [1/2]

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 G_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.

Exceptions

  Glib::Error |

## ◆ fill() [2/2]

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

A fill() convenience overload.

## ◆ fill_async() [1/2]

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.

## ◆ fill_async() [2/2]

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.

## ◆ fill_finish()

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.

Exceptions

  Glib::Error |

## ◆ get_available()

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

Gets the size of the available data within the stream.

Returns
  Size of the available stream.

## ◆ get_buffer_size()

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

Gets the size of the input buffer.

Returns
  The current buffer size.

## ◆ get_type()

static GType Gio::BufferedInputStream::get_type | ( |  | ) |
| static

Get the GType for this class, for use with the underlying GObject type system.

## ◆ gobj() [1/2]

GBufferedInputStream* Gio::BufferedInputStream::gobj | ( |  | ) |
| inline

Provides access to the underlying C GObject.

## ◆ gobj() [2/2]

const GBufferedInputStream* Gio::BufferedInputStream::gobj | ( |  | ) | const
| inline

Provides access to the underlying C GObject.

## ◆ gobj_copy()

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.

## ◆ operator=()

BufferedInputStream& Gio::BufferedInputStream::operator= | ( | BufferedInputStream&& | src | ) |
| noexcept

## ◆ peek()

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.

## ◆ peek_buffer()

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.

## ◆ property_buffer_size() [1/2]

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

The size of the backend buffer.

Default value: 4096

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

## ◆ property_buffer_size() [2/2]

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

The size of the backend buffer.

Default value: 4096

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

## ◆ read_byte() [1/2]

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.

Exceptions

  Glib::Error |

## ◆ read_byte() [2/2]

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

A read_byte() convenience overload.

## ◆ set_buffer_size()

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

## ◆ wrap()

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.