虚拟方法

GioDatagramBasedcondition_check

自 2.48 版以来

声明 [源代码][source]

GIOCondition
condition_check (
  GDatagramBased* datagram_based,
  GIOCondition condition
)

描述 [源代码][source]

检查datagram_based是否已准备好执行操作。将检查并屏蔽condition中指定的操作,以及在datagram_based上已满足的当前条件。将返回结果。

如果通过 g_datagram_based_receive_messages() 可读取数据或连接由远程关闭(EOS),则返回值中将设置 G_IO_IN;如果未使用某些实现特定的方法(例如,如果它是一个 GSocket,则使用 g_socket_close()g_socket_shutdown() 并将 shutdown_read 设置为 true)在本地关闭 datagram_based,则也会设置G_IO_IN

如果关闭连接或关闭(例如,通过调用 g_socket_close() 或将 shutdown_read 设置为 true 的 g_socket_shutdown())所有对此函数的调用都将返回 G_IO_ERROR_CLOSED

如果预期可以使用 g_datagram_based_send_messages() 发送至少一个字节而不会阻塞,则将设置 G_IO_OUT。如果本地已关闭 datagram_based,则不会设置。

如果本地已关闭连接,则将设置 G_IO_HUP

如果之前使用 g_datagram_based_send_messages() 队列传输数据时出现异步错误,则设置 G_IO_ERR

请注意,在 Windows 上,操作可能返回 G_IO_ERROR_WOULD_BLOCK,即使立即在 g_datagram_based_condition_check() 声明 GDatagramBased 准备写入后。与其在成功调用 g_datagram_based_condition_check() 并尝试写入 GDatagramBased 后再进行,通常更好的做法是立即尝试写入,如果初始尝试返回 G_IO_ERROR_WOULD_BLOCK,则稍后再尝试。

condition 中指定 G_IO_ERRG_IO_HUP 是没有意义的;如果这些条件为真,它们将在输出中始终被设置。除了这些标志之外,输出将保证被 condition 屏蔽。

此调用决不会阻塞。

自 2.48 版以来可用

参数

condition

类型: GIOCondition

要检查的 GIOCondition 掩码。

返回值

类型: GIOCondition

当前状态的 GIOCondition 掩码。