虚拟方法
自 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。