方法

GioPollableOutputStreamwrite_nonblocking

声明 [src]

gssize
g_pollable_output_stream_write_nonblocking (
  GPollableOutputStream* stream,
  void* buffer,
  gsize count,
  GCancellable* cancellable,
  GError** error
)

描述 [src]

尝试从 bufferstream 写入最多 count 字节,类似于 g_output_stream_write()。如果 stream 当前不可写入,将立即返回 G_IO_ERROR_WOULD_BLOCK,然后您可以使用 g_pollable_output_stream_create_source() 创建一个将在 stream 可写入时触发的 GSource

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

另外请注意,如果返回 G_IO_ERROR_WOULD_BLOCK,一些底层传输(如 D/TLS)要求您在下一个写入调用中重新发送相同的 buffercount

如果 g_pollable_output_stream_can_poll() 对于 stream 返回 FALSE,则此方法的行为是未定义的。

参数

buffer

类型: 一个 guint8 数组

用于写入数据的缓冲区。

数组的长度在 count 参数中指定。
数据由方法调用者拥有。
count

类型: gsize

您要写入的字节数。

cancellable

类型: GCancellable

一个 GCancellable,或 NULL

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

类型: GError **

一个可恢复错误的返回位置。

该参数可以是 NULL
如果返回位置不是 NULL,则您必须将其初始化为 NULL GError*
如果没有错误,则方法将留空初始化该参数。
在发生错误的情况下,该参数将被设置为一个新的 GError;调用者将获取数据的所有权,并负责释放它。

返回值

类型: gssize

写入的字节数,或在出错时(包括 G_IO_ERROR_WOULD_BLOCK)为 -1。