方法

GioDatagramBasedcondition_check

自:2.48

声明 [源代码]

GIOCondition
g_datagram_based_condition_check (
  GDatagramBased* datagram_based,
  GIOCondition condition
)

描述 [源代码]

检查datagram_based的操作就绪状态。会检查并掩蔽datagram_based上当前满足的条件,以确定condition中指定的操作。结果将被返回。

如果使用g_datagram_based_receive_messages()可以读取数据或连接已由远端关闭(EOS),则返回值中将设置G_IO_IN;如果数据报式尚未使用某些实现特定方法(例如,使用g_socket_close()或带有shutdown_read设置的g_socket_shutdown())本地关闭(如果它是GSocket)。

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

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

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

如果在之前使用g_datagram_based_send_messages().发送数据时出现异步错误,则将设置G_IO_ERR

请注意,在Windows上,在g_datagram_based_condition_check()声明GDatagramBased准备好写入之后,操作可能返回G_IO_ERROR_WOULD_BLOCK。与其调用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掩码。