【问题标题】:Multiple processes providing DBus objects提供 DBus 对象的多个进程
【发布时间】:2013-04-21 04:33:02
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: dbus


    【解决方案1】:

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-01
      • 2015-04-12
      • 1970-01-01
      • 2015-02-28
      • 2019-11-23
      • 2011-12-18
      • 1970-01-01
      相关资源
      最近更新 更多