dbus:刷新连接?

时间:2009-11-02 02:19:40

标签: c linux dbus

当我执行“dbus_connection_close”时,是否需要刷新消息队列?

换句话说,我是否需要继续使用“dbus_connection_read_write_dispatch”,直到收到“断开连接”指示或者是否可以安全地停止调度?

更新:我需要以干净的方式关闭与DBus的连接。从阅读文档开始,所有的清理工作必须在“不参考”连接之前完成,而且这个过程并没有很好地记录在IMO中。

2 个答案:

答案 0 :(得分:2)

经过多次挖掘后,似乎有两种类型的连接:共享和私有。

共享连接不得只关闭未引用。此外,似乎没有必须冲洗连接。发送除非必须传递外发邮件。

在我的情况下,我只需要尽快结束对DBus的通信,而不是试图挽救任何传出的消息。

因此,简短的回答是:否 - 在dbus_connection_unref之前不需要刷新/不需要调度。

答案 1 :(得分:0)

查看at the documentation for dbus_connection_close()may be invoked是调度状态函数唯一指示连接已关闭的内容。

因此,在这里订购是您可能需要注意的事项......即在消息队列中的事情发生之前收到关闭/断开连接的通知。

查看source of the function,看起来它唯一要做的就是失败时返回,即无效的连接/ NULL指针。否则,它(似乎)只是挂断电话。

这意味着是的,您可能应该在挂断之前刷新消息队列。

免责声明:我只需要和dbus谈几次,我绝对不是权威。