方法
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)可能需要在下一次写入调用中重新发送相同的 vectors 和 n_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-
类型:
GCancellableGCancellable或NULL。此参数可以是 NULL。数据由方法的调用者拥有。 error-
类型:
GError **recoverable error 的返回位置。
此参数可以是 NULL。如果返回位置不是 NULL,则您必须将其初始化为NULL的GError*。如果方法没有错误,方法将初始化此参数为 NULL。在出现错误的情况下,此参数将设置为一个新分配的 GError;调用者将拥有该数据,并负责释放它。
返回值
类型: GPollableReturn
成功时返回 %G_POLLABLE_RETURN_OK,如果流当前不可写(并且 error 未设置)则返回 G_POLLABLE_RETURN_WOULD_BLOCK,如果有错误则返回 G_POLLABLE_RETURN_FAILED;在这种情况下,error 将被设置。