Tries to read from stream, as with InputStream.read (if blocking is TRUE) or g_pollable_input_stream_read_nonblocking() (if blocking is FALSE). This can be used to more easily share code between blocking and non-blocking implementations of a method.
If blocking is FALSE, then stream must be a GPollableInputStream for which g_pollable_input_stream_can_poll() returns TRUE, or else the behavior is undefined. If blocking is TRUE, then stream does not need to be a GPollableInputStream
a buffer to read data into
whether to do blocking I/O
optional gio.Cancellable object, NULL to ignore.
the number of bytes read, or -1 on error.
GException on failure.