方法
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
-
类型:
GCancellable
GCancellable
或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
将被设置。