虚拟方法

自 2.60 以来

声明 [src]

GPollableReturn
writev_nonblocking (
  GPollableOutputStream* stream,
  const GOutputVector* vectors,
  gsize n_vectors,
  gsize* bytes_written,
  GError** error
)

说明 [src]

尝试将 n_vectors 中的字节数据写入 stream,类似于 g_output_stream_writev()。如果 stream 当前不可写,则立即返回 %G_POLLABLE_RETURN_WOULD_BLOCK,然后您可以使用 g_pollable_output_stream_create_source() 创建一个当 stream 可写时会被触发的事件。在这个情况下 error 将不会被设置。

注意由于该方法从不阻塞,因此您无法通过 cancellable 来取消它。但是,如果当您调用该方法时 cancellable 已经被取消,它会返回一个错误,这可能会在您在事件触发后取消事件发生时发生。

还要注意,如果返回 G_POLLABLE_RETURN_WOULD_BLOCK,某些底层传输(如 D/TLS)需要您在下一个写入调用中重新发送相同的 vectorsn_vectors

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

自 2.60 以来可用

参数

vectors

类型: 一个 GOutputVector 数组

包含要写入的 GOutputVectors 的缓冲区。

数组的长度由 n_vectors 参数指定。
数据由方法的调用者所有。
n_vectors

类型: gsize

要写入的向量数。

bytes_written

类型: gsize*

存储写入流中字节数量的位置。

函数将设置此参数。
该参数可以是 NULL
error

类型: GError **

可恢复错误的返回位置。

该参数可以是 NULL
如果返回位置不是 NULL,则您必须将其初始化为 NULLGError*
虚拟函数在没有错误的情况下将参数初始化为 NULL
发生错误的情况,参数将设置为新的 GError;调用者将拥有数据的所有权,并负责释放它。

返回值

类型: GPollableReturn

成功时返回 G_POLLABLE_RETURN_OK,如果流当前不可写则返回 G_POLLABLE_RETURN_WOULD_BLOCK(并且 error 不会被设置),或者在发生错误时返回 G_POLLABLE_RETURN_FAILED,在这种情况下将设置 error