虚函数
GioPollableOutputStreamwrite_nonblocking
声明 [src]
gssize
write_nonblocking (
GPollableOutputStream* stream,
void* buffer,
gsize count,
GError** error
)
描述 [src]
尝试从 buffer
写入最多 count
个字节到 stream
,像 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
的数组从其中写入数据的缓冲区。
该参数可以是 NULL
。数组的长度由 count
参数指定。数据由方法调用者拥有。 count
-
类型:
gsize
您想要写入的字节数。
error
-
类型:
GError **
恢复错误的位置。
该参数可以是 NULL
。如果返回位置不是 NULL
,则必须将其初始化为NULL
的GError*
。如果没有错误,虚拟函数将留下初始化的参数为 NULL
。在出错的情况下,参数将设置为一个新的 GError
;调用者将拥有数据的所有权,并负责释放它。