0

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

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

我模糊的解决方案是让所有进程共享一个众所周知的连接名称(org.example.MyApplication),并提供对象及其 PID 以避免重复(/org/example/MyApplication/)。但是,进程不能共享同一个众所周知的连接名称,所以这行不通。

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

任何想法我怎么能做到这一点?

4

1 回答 1

0

KDE 使用的一种方法是使用以 PID 为后缀的知名名称,例如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)
于 2013-04-30T14:18:25.477 回答