当我执行“dbus_connection_close”时,是否需要刷新消息队列?
换句话说,我是否需要继续使用“dbus_connection_read_write_dispatch”,直到收到“断开连接”指示,或者停止调度是否安全?
更新:我需要以干净的方式关闭与 DBus 的连接。通过阅读文档,必须在“取消引用”连接之前完成所有清理工作,并且这个过程没有很好地记录 IMO。
经过一番挖掘,似乎有两种类型的连接:共享和私有。
共享连接不能只关闭unreferenced。此外,除非必须传递传出消息,否则似乎不必刷新和分派连接。
就我而言,我只需要尽快结束通过 DBus 进行的通信,而无需尝试挽救任何传出消息。
因此,简短的回答是:否 - 不需要在dbus_connection_unref
.
查看dbus_connection_close() 的文档,唯一可以调用的是指示连接已关闭的调度状态函数。
因此,在这里订购是您可能需要注意的事情.. 即在消息队列中留下的东西之前收到关闭/断开连接的通知。
查看函数的源代码,看起来它唯一要做的就是在失败时返回,即无效连接/空指针。否则,它(似乎)只是挂断。
这意味着是的,您可能应该在挂断之前刷新消息队列。
免责声明:我只需要与 dbus 交谈几次,我绝不是这方面的权威。