提供DBus对象的多个进程

时间:2013-04-21 04:33:03

标签: dbus

我正在编写一个适用于单个文档的程序。如果要打开多个文档,只需为每个文档打开一个进程(是的,在这种情况下,进程隔离很重要)。我们将这些过程称为服务器。

每个服务器都会提供一个表示文档的对象,我希望客户端应用程序能够发现这些对象。理想情况下,客户端界面无法判断文档是否归不同进程所有。

我的模糊解决方案是让所有进程共享一个众所周知的连接名称(org.example.MyApplication),并在其中提供带有PID的对象以避免重复(/ org / example / MyApplication /)。 但是,进程不能共享相同的已知连接名称,因此无法正常工作。

我想我可以让客户端应用程序监视新连接,并扫描它们以查看预期的对象路径是否存在,但这似乎是一个坏主意。

我有什么想法可以做到这一点吗?

1 个答案:

答案 0 :(得分:0)

KDE使用的一种方法是使用以org.kde.StatusNotifierItem-2055-1为后缀的众所周知的名称。客户端可以调用org.freedesktop.DBus.ListNames并过滤列表。

或者第一台服务器可以获取众所周知的名称,后续的服务器会将其命名为注册文档,以便客户可以发现:

src name = :0.42 
src path = /org/example/MyApplication/2

dest name =   org.example.MyApplication
dest path =   /org/example/MyApplication/Documents
dest method = Publish(:0.42, /org/example/MyApplication/Documents/2)