方法

GioPollableInputStreamread_nonblocking

声明 [src]

gssize
g_pollable_input_stream_read_nonblocking (
  GPollableInputStream* stream,
  void* buffer,
  gsize count,
  GCancellable* cancellable,
  GError** error
)

描述 [src]

尝试从 stream 读取最多 count 字节到 buffer,与 g_input_stream_read() 相同。如果 stream 当前不可读,将立即返回 G_IO_ERROR_WOULD_BLOCK,可以使用 g_pollable_input_stream_create_source() 创建一个当 stream 可读时将被触发的 GSource

注意,由于该方法从不阻塞,您无法实际使用 cancellable 来取消它。但是,如果在您调用时 cancellable 已被取消,它将返回错误,这可能在您在源触发(由于已被取消)后调用此方法时发生。

如果 g_pollable_input_stream_can_poll() 对于 stream 返回 FALSE,则此方法的操作未定义。

参数

buffer

类型: guint8 类型数组

将数据读取到其中的缓冲区(其长度应至少为 count 字节)。

会被函数设置。
数组的长度由 count 参数指定。
返回的数据由实例所有。
count

类型: gsize

要读取的字节数。

cancellable

类型: GCancellable

一个 GCancellable,或者是 NULL

参数可以是 NULL
数据由方法调用者所有。
error

类型: GError **

用于恢复错误的返回位置的a recoverable error

参数可以是 NULL
如果返回位置不是 NULL,则必须将其初始化为 NULL GError
如果没有任何错误,方法将保留初始化为 NULL
在出现错误的情况下,参数将设置为新的 GError;调用者将获得数据的所有权,并负责释放它。

返回值

类型: gssize

读取的字节数,或错误(包括 G_IO_ERROR_WOULD_BLOCK)时的 -1。