虚函数

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)需要您在下一个写调用中重新发送相同的 buffercount

如果 g_pollable_output_stream_can_poll() 对于 stream 返回 FALSE,此方法的行为未定义。

参数

buffer

类型: 一个 guint8 的数组

从其中写入数据的缓冲区。

该参数可以是 NULL
数组的长度由 count 参数指定。
数据由方法调用者拥有。
count

类型: gsize

您想要写入的字节数。

error

类型: GError **

恢复错误的位置。

该参数可以是 NULL
如果返回位置不是 NULL,则必须将其初始化为 NULLGError*
如果没有错误,虚拟函数将留下初始化的参数为 NULL
在出错的情况下,参数将设置为一个新的 GError;调用者将拥有数据的所有权,并负责释放它。

返回值

类型: gssize

写入的字节数,或者在出错时(包括 G_IO_ERROR_WOULD_BLOCK)为 -1。