虚拟方法
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_ERR
或 G_IO_HUP
是没有意义的;如果这些条件为真,它们将在输出中始终被设置。除了这些标志之外,输出将保证被 condition
屏蔽。
此调用决不会阻塞。
自 2.48 版以来可用
参数
condition
-
类型:
GIOCondition
要检查的
GIOCondition
掩码。
返回值
类型: GIOCondition
当前状态的 GIOCondition
掩码。