当我执行“dbus_connection_close”时,是否需要刷新消息队列?
换句话说,我是否需要继续使用“dbus_connection_read_write_dispatch”,直到收到“断开连接”指示或者是否可以安全地停止调度?
更新:我需要以干净的方式关闭与DBus的连接。从阅读文档开始,所有的清理工作必须在“不参考”连接之前完成,而且这个过程并没有很好地记录在IMO中。
答案 0 :(得分:2)
经过多次挖掘后,似乎有两种类型的连接:共享和私有。
共享连接不得只关闭未引用。此外,似乎没有必须冲洗连接。发送除非必须传递外发邮件。
在我的情况下,我只需要尽快结束对DBus的通信,而不是试图挽救任何传出的消息。
因此,简短的回答是:否 - 在dbus_connection_unref
之前不需要刷新/不需要调度。
答案 1 :(得分:0)
查看at the documentation for dbus_connection_close(),may be invoked是调度状态函数唯一指示连接已关闭的内容。
因此,在这里订购是您可能需要注意的事项......即在消息队列中的事情发生之前收到关闭/断开连接的通知。
查看source of the function,看起来它唯一要做的就是失败时返回,即无效的连接/ NULL指针。否则,它(似乎)只是挂断电话。
这意味着是的,您可能应该在挂断之前刷新消息队列。
免责声明:我只需要和dbus谈几次,我绝对不是权威。