2013-04-21 1 views
0

Я пишу программу, которая работает с одним документом. Если вы хотите открыть несколько документов, вы просто открываете процесс на один документ (да, в этом случае важна изоляция процесса). Назовем эти процессы серверами.Несколько процессов, обеспечивающих объекты DBus

Каждый сервер предоставит один объект, представляющий документ, и я хотел бы, чтобы клиентские приложения могли находить эти объекты. В идеале клиентский интерфейс не сможет определить, принадлежат ли документы другим процессам или нет.

Мое расплывчатое решение заключается в том, чтобы все процессы совместно использовали известное имя соединения (org.example.MyApplication) и предоставляли объекты с их идентификатором PID в них, чтобы избежать дублирования (/ org/example/MyApplication /). Однако процессы не могут использовать одно и то же известное имя соединения, так что это не сработает.

Я предполагаю, что я мог бы заставить клиентское приложение отслеживать новые подключения и сканировать их, чтобы увидеть, существует ли ожидаемый путь объекта, но это похоже на плохую идею.

Любые идеи, как я могу это сделать?

ответ

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) 

 Смежные вопросы

  • Нет связанных вопросов^_^