2015-02-12 24 views
0

我创建一个DBus服务并向其中添加对象。如何将对象添加到来自另一个进程/程序的DBus服务

QDBusConnection connection = QDBusConnection::sessionBus(); 
connection.registerService(serviceName); // name, e.g. "foo" 
QDBusConnection::sessionBus().registerObject(path, object, myoptions); 

很好,我可以在DBus显示器的“服务”下看到我的对象。现在我想添加更多的对象,但是来自另一个程序(这是相关的,但独立的)。

connection.registerService(serviceName);失败,因为该服务已经存在。 我将如何能够在相同的服务名称下注册更多对象?

背景:我有客户使用这些服务。他们做不是知道谁提供的服务,但只是服务的名称。所以他们总是引用相同的服务名称。但有几家提供商应提供该服务。

我试图使用没有服务名称(空字符串,只是依靠对象路径)。但代理基于

QDBusAbstractInterface(serviceName, path, interfaceName.toUtf8().constData(), connection, parent) 

似乎并没有与空(“”)serviceName(正确吗?)工作。

回答

1

你不能,一个连接到dbus ==一个名字。连接通常是unix套接字或抽象套接字(在Linux上)。您需要使用某种类型的第一个连接或其他服务的RPC(或dbus调用)代理呼叫,并响应第一个连接的结果。

相关问题