虚拟方法
自 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)需要您在下一个写入调用中重新发送相同的 vectors
和 n_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
,则您必须将其初始化为NULL
的GError*
。虚拟函数在没有错误的情况下将参数初始化为 NULL
。发生错误的情况,参数将设置为新的 GError
;调用者将拥有数据的所有权,并负责释放它。
返回值
类型: GPollableReturn
成功时返回 G_POLLABLE_RETURN_OK
,如果流当前不可写则返回 G_POLLABLE_RETURN_WOULD_BLOCK
(并且 error
不会被设置),或者在发生错误时返回 G_POLLABLE_RETURN_FAILED
,在这种情况下将设置 error
。