我想为已经拥有的总线名称注册一个对象。下面是我在新总线上注册对象的方法,但如果总线已经存在,则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"));
答案 0 :(得分:0)
如Gio docs所述,如果总线名称由使用BusNameOwnerFlags.ALLOW_REPLACEMENT
的消息总线连接拥有,则可以使用BusNameOwnerFlags.REPLACE
并从另一个连接获取名称。否则,own_name
函数将无法获取名称。
通过我在Diodon git history上找到的提交,似乎"net.launchpad.Diodon"
是使用标记NONE
获取的。