方法
GioPollableOutputStreamwrite_nonblocking
声明 [src]
gssize
g_pollable_output_stream_write_nonblocking (
GPollableOutputStream* stream,
void* buffer,
gsize count,
GCancellable* cancellable,
GError** error
)
描述 [src]
尝试从 buffer
向 stream
写入最多 count
字节,类似于 g_output_stream_write()。如果 stream
当前不可写入,将立即返回 G_IO_ERROR_WOULD_BLOCK
,然后您可以使用 g_pollable_output_stream_create_source()
创建一个将在 stream
可写入时触发的 GSource
。
请注意,由于此方法从不阻塞,您无法实际使用 cancellable
来取消它。但是,如果在调用时 cancellable
已被取消,则它将返回一个错误,这可能在您在源触发后因被取消而调用此方法时发生。
另外请注意,如果返回 G_IO_ERROR_WOULD_BLOCK
,一些底层传输(如 D/TLS)要求您在下一个写入调用中重新发送相同的 buffer
和 count
。
如果 g_pollable_output_stream_can_poll()
对于 stream
返回 FALSE
,则此方法的行为是未定义的。
参数
buffer
-
类型: 一个
guint8
数组用于写入数据的缓冲区。
数组的长度在 count
参数中指定。数据由方法调用者拥有。 count
-
类型:
gsize
您要写入的字节数。
cancellable
-
类型:
GCancellable
一个
GCancellable
,或NULL
。该参数可以是 NULL
。数据由方法调用者拥有。 error
-
类型:
GError **
一个可恢复错误的返回位置。
该参数可以是 NULL
。如果返回位置不是 NULL
,则您必须将其初始化为NULL
GError*
。如果没有错误,则方法将留空初始化该参数。 在发生错误的情况下,该参数将被设置为一个新的 GError
;调用者将获取数据的所有权,并负责释放它。