虚拟方法

GiOBufferedInputStreamfill

声明 [src]

gssize
fill (
  GBufferedInputStream* stream,
  gssize count,
  GCancellable* cancellable,
  GError** error
)

描述 [src]

尝试从流中读取 count 字节到缓冲区。这个读取过程可能会阻塞。

如果 count 为零,则返回零且不做任何操作。如果 count 大于 G_MAXSSIZE,则会导致 G_IO_ERROR_INVALID_ARGUMENT 错误。

成功时,返回填充到缓冲区的字节数。如果这个数字不等于请求的大小,这不是错误,因为这可能在文件末尾发生。在文件末尾(或 count 为零时)返回零,但决不返回其他值。

如果 count 为 -1,则尝试读取的大小等于填充缓冲区所需的字节数。

如果 cancellable 不为 NULL,则可以通过从另一个线程触发可取消对象来取消操作。如果操作被取消,将返回错误 G_IO_ERROR_CANCELLED。如果在取消操作时操作已部分完成,则将返回部分结果,而不带错误。

出错时,返回 -1,并相应设置 error

有关此函数的异步、非阻塞版本的详细信息,请参阅 g_buffered_input_stream_fill_async()

参数

count

类型: gssize

将从流中读取的字节数。

cancellable

类型: GCancellable

可选的 GCancellable 对象,NULL 表示忽略。

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

类型: GError **

恢复错误的返回位置。

此参数可以为 NULL
如果返回位置不为 NULL,则必须将其初始化为 NULL GError*
如果虚拟函数中没有错误,则将通过函数将此参数保留初始化为 NULL
在出现错误的情况下,此参数将设置为新的 GError,调用者将负责获取数据的所有权,并负责释放它。

返回值

类型: gssize

填充到 stream 缓冲区的字节数,不超过 count,或在出错时返回 -1