### Class

# Gio InputStream

#### Description

    abstract class Gio.InputStream : GObject.Object
    {
      /* No available fields */
    }

`GInputStream` is a base class for implementing streaming input.

It has functions to read from a stream (`g_input_stream_read()`), to close a stream (`g_input_stream_close()`) and to skip some content (`g_input_stream_skip()`).

To copy the content of an input stream to an output stream without manually handling the reads and writes, use `g_output_stream_splice()`.

See the documentation for `GIOStream` for details of thread safety of streaming APIs.

All of these functions have async variants too.

#### Ancestors

- GObject

#### Descendants

- GFileInputStream
- GFilterInputStream
- GMemoryInputStream
- GUnixInputStream

#### Instance methods

###### g_input_stream_clear_pending

Clears the pending flag on `stream`.

###### g_input_stream_close

Closes the stream, releasing resources related to it.

###### g_input_stream_close_async

Requests an asynchronous closes of the stream, releasing resources related to it. When the operation is finished `callback` will be called. You can then call `g_input_stream_close_finish()` to get the result of the operation.

###### g_input_stream_close_finish

Finishes closing a stream asynchronously, started from g_input_stream_close_async().

###### g_input_stream_has_pending

Checks if an input stream has pending actions.

###### g_input_stream_is_closed

Checks if an input stream is closed.

###### g_input_stream_read

Tries to read `count` bytes from the stream into the buffer starting at `buffer`. Will block during this read.

###### g_input_stream_read_all

Tries to read `count` bytes from the stream into the buffer starting at `buffer`. Will block during this read.

###### g_input_stream_read_all_async

Request an asynchronous read of `count` bytes from the stream into the buffer starting at `buffer`.

since: 2.44

###### g_input_stream_read_all_finish

Finishes an asynchronous stream read operation started with g_input_stream_read_all_async().

since: 2.44

###### g_input_stream_read_async

Request an asynchronous read of `count` bytes from the stream into the buffer starting at `buffer`. When the operation is finished `callback` will be called. You can then call `g_input_stream_read_finish()` to get the result of the operation.

###### g_input_stream_read_bytes

Like g_input_stream_read(), this tries to read `count` bytes from the stream in a blocking fashion. However, rather than reading into a user-supplied buffer, this will create a new `GBytes` containing the data that was read. This may be easier to use from language bindings.

since: 2.34

###### g_input_stream_read_bytes_async

Request an asynchronous read of `count` bytes from the stream into a new `GBytes`. When the operation is finished `callback` will be called. You can then call `g_input_stream_read_bytes_finish()` to get the result of the operation.

since: 2.34

###### g_input_stream_read_bytes_finish

Finishes an asynchronous stream read-into-`GBytes` operation.

since: 2.34

###### g_input_stream_read_finish

Finishes an asynchronous stream read operation.

###### g_input_stream_set_pending

Sets `stream` to have actions pending. If the pending flag is already set or `stream` is closed, it will return `FALSE` and set `error`.

###### g_input_stream_skip

Tries to skip `count` bytes from the stream. Will block during the operation.

###### g_input_stream_skip_async

Request an asynchronous skip of `count` bytes from the stream. When the operation is finished `callback` will be called. You can then call `g_input_stream_skip_finish()` to get the result of the operation.

###### g_input_stream_skip_finish

Finishes a stream skip operation.

##### Methods inherited from GObject (43)

Please see GObject for a full list of methods.

#### Signals

##### Signals inherited from GObject (1)

###### GObject::notify

The notify signal is emitted on an object when one of its properties has its value set through g_object_set_property(), g_object_set(), et al.

#### Class structure

    struct GioInputStreamClass {
      GObjectClass parent_class;
      gssize (* read_fn) (
        GInputStream* stream,
        void* buffer,
        gsize count,
        GCancellable* cancellable,
        GError** error
      );
      gssize (* skip) (
        GInputStream* stream,
        gsize count,
        GCancellable* cancellable,
        GError** error
      );
      gboolean (* close_fn) (
        GInputStream* stream,
        GCancellable* cancellable,
        GError** error
      );
      void (* read_async) (
        GInputStream* stream,
        void* buffer,
        gsize count,
        int io_priority,
        GCancellable* cancellable,
        GAsyncReadyCallback callback,
        gpointer user_data
      );
      gssize (* read_finish) (
        GInputStream* stream,
        GAsyncResult* result,
        GError** error
      );
      void (* skip_async) (
        GInputStream* stream,
        gsize count,
        int io_priority,
        GCancellable* cancellable,
        GAsyncReadyCallback callback,
        gpointer user_data
      );
      gssize (* skip_finish) (
        GInputStream* stream,
        GAsyncResult* result,
        GError** error
      );
      void (* close_async) (
        GInputStream* stream,
        int io_priority,
        GCancellable* cancellable,
        GAsyncReadyCallback callback,
        gpointer user_data
      );
      gboolean (* close_finish) (
        GInputStream* stream,
        GAsyncResult* result,
        GError** error
      );
      void (* _g_reserved1) (
    void
      );
      void (* _g_reserved2) (
    void
      );
      void (* _g_reserved3) (
    void
      );
      void (* _g_reserved4) (
    void
      );
      void (* _g_reserved5) (
    void
      );

    }

No description available.

###### Class members

`parent_class: GObjectClass`

  No description available.

`read_fn: gssize (* read_fn) ( GInputStream* stream, void* buffer, gsize count, GCancellable* cancellable, GError** error )`

  No description available.

`skip: gssize (* skip) ( GInputStream* stream, gsize count, GCancellable* cancellable, GError** error )`

  No description available.

`close_fn: gboolean (* close_fn) ( GInputStream* stream, GCancellable* cancellable, GError** error )`

  No description available.

`read_async: void (* read_async) ( GInputStream* stream, void* buffer, gsize count, int io_priority, GCancellable* cancellable, GAsyncReadyCallback callback, gpointer user_data )`

  No description available.

`read_finish: gssize (* read_finish) ( GInputStream* stream, GAsyncResult* result, GError** error )`

  No description available.

`skip_async: void (* skip_async) ( GInputStream* stream, gsize count, int io_priority, GCancellable* cancellable, GAsyncReadyCallback callback, gpointer user_data )`

  No description available.

`skip_finish: gssize (* skip_finish) ( GInputStream* stream, GAsyncResult* result, GError** error )`

  No description available.

`close_async: void (* close_async) ( GInputStream* stream, int io_priority, GCancellable* cancellable, GAsyncReadyCallback callback, gpointer user_data )`

  No description available.

`close_finish: gboolean (* close_finish) ( GInputStream* stream, GAsyncResult* result, GError** error )`

  No description available.

`_g_reserved1: void (* _g_reserved1) ( void )`

  No description available.

`_g_reserved2: void (* _g_reserved2) ( void )`

  No description available.

`_g_reserved3: void (* _g_reserved3) ( void )`

  No description available.

`_g_reserved4: void (* _g_reserved4) ( void )`

  No description available.

`_g_reserved5: void (* _g_reserved5) ( void )`

  No description available.

#### Virtual methods

###### Gio.InputStreamClass.close_async

Requests an asynchronous closes of the stream, releasing resources related to it. When the operation is finished `callback` will be called. You can then call `g_input_stream_close_finish()` to get the result of the operation.

###### Gio.InputStreamClass.close_finish

Finishes closing a stream asynchronously, started from g_input_stream_close_async().

###### Gio.InputStreamClass.close_fn

No description available.

###### Gio.InputStreamClass.read_async

Request an asynchronous read of `count` bytes from the stream into the buffer starting at `buffer`. When the operation is finished `callback` will be called. You can then call `g_input_stream_read_finish()` to get the result of the operation.

###### Gio.InputStreamClass.read_finish

Finishes an asynchronous stream read operation.

###### Gio.InputStreamClass.read_fn

No description available.

###### Gio.InputStreamClass.skip

Tries to skip `count` bytes from the stream. Will block during the operation.

###### Gio.InputStreamClass.skip_async

Request an asynchronous skip of `count` bytes from the stream. When the operation is finished `callback` will be called. You can then call `g_input_stream_skip_finish()` to get the result of the operation.

###### Gio.InputStreamClass.skip_finish

Finishes a stream skip operation.