虚函数

GioPollableInputStreamread_nonblocking

声明 [来源位置]

gssize
read_nonblocking (
  GPollableInputStream* stream,
  void* buffer,
  gsize count,
  GError** error
)

描述 [来源位置]

尝试从stream读到buffer中的最多count字节,类似于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字节)。

此参数将由函数设置。
虚拟函数可以将此参数设置为NULL
数组的长度由count参数指定。
返回的数据由实例所有。
count

类型: gsize

要读取的字节数。

error

类型: GError **

可恢复错误的返回位置

此参数可以是NULL
如果返回位置不是NULL,那么您必须将其初始化为NULLGError*
如果没有错误,虚拟函数将保持参数初始化为NULL
如果发生错误,此参数将被设置为一个新的GError;调用者将拥有数据,并负责释放它。

返回值

类型: gssize

读取的字节数,或在错误情况下为-1(包括G_IO_ERROR_WOULD_BLOCK)。