获取已拥有的总线名称的GDBusConnection

时间:2017-07-22 20:07:44

标签: glib dbus vala gdbus

我想为已经拥有的总线名称注册一个对象。下面是我在新总线上注册对象的方法,但如果总线已经存在,则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"));

1 个答案:

答案 0 :(得分:0)

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

通过我在Diodon git history上找到的提交,似乎"net.launchpad.Diodon"是使用标记NONE获取的。