0

我想为已经拥有的总线名称注册一个对象。下面是我如何在新总线上注册对象,但own_name如果总线已经存在则失败。我可以通过其他方式检索 DBusConnection 对象以便调用register_object吗?

Bus.own_name (BusType.SESSION, "net.launchpad.Diodon", BusNameOwnerFlags.NONE,
    conn => {
        try {
            conn.register_object ("/net/launchpad/Diodon", new DBusController (controller));
        } catch (IOError e) {
            stderr.printf ("Could not register service\n");
        }
    },
    () => {},
    () => stderr.printf ("Could not aquire name\n"));
4

1 回答 1

0

Gio docs所述,如果总线名称由消息总线连接拥有,则BusNameOwnerFlags.ALLOW_REPLACEMENT您可以使用BusNameOwnerFlags.REPLACE并从另一个连接中获取名称。否则,own_name函数将无法获取名称。

根据我在Diodon git history上可以找到的提交,它似乎"net.launchpad.Diodon"是使用 flag 获得的NONE

于 2017-07-30T23:52:20.403 回答