方法

GioPollableOutputStreamwritev_nonblocking

自:2.60

声明 [源]

GPollableReturn
g_pollable_output_stream_writev_nonblocking (
  GPollableOutputStream* stream,
  const GOutputVector* vectors,
  gsize n_vectors,
  gsize* bytes_written,
  GCancellable* cancellable,
  GError** error
)

描述 [源]

尝试将包含在 n_vectors vectors 中的字节写入 stream,就像使用 g_output_stream_writev() 一样。如果 stream 当前不可写,这会立即返回 %G_POLLABLE_RETURN_WOULD_BLOCK,并且您可以使用 g_pollable_output_stream_create_source() 创建一个在 stream 可写时触发的 GSource。在那种情况下,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*

存储写入 stream 的字节数的位置。

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

类型: GCancellable

GCancellableNULL

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

类型: GError **

recoverable error 的返回位置。

此参数可以是 NULL
如果返回位置不是 NULL,则您必须将其初始化为 NULLGError*
如果方法没有错误,方法将初始化此参数为 NULL
在出现错误的情况下,此参数将设置为一个新分配的 GError;调用者将拥有该数据,并负责释放它。

返回值

类型: GPollableReturn

成功时返回 %G_POLLABLE_RETURN_OK,如果流当前不可写(并且 error 未设置)则返回 G_POLLABLE_RETURN_WOULD_BLOCK,如果有错误则返回 G_POLLABLE_RETURN_FAILED;在这种情况下,error 将被设置。