LINUX.ORG.RU

Реализация одного интерфейса в dbus в нескольких процессах

 ,


0

2

Хотелось проверить, правильно ли я осилил DBus. Создал интерфейс, через который хочется посылать команды нескольким процессам. Т.е. есть несколько процессов, реализующих этот интерфейс. Чтобы зарестрировать сервис на шине DBus, нужно уникальное имя. Выходит нужен общий префикс, по которому я буду парсить все доступные сервисы и уже потом пробовать обращаться, так?

Т.е. имена сервисов должны быть типа такие:
- com.company.interface.myapp1
- com.company.interface.myapp2
...

В контексте Qt есть ли способ отслеживания, когда появляются новые сервисы, или только каждые n секунд пробегаться по всем сервисам единственный вариант?

★★★★★

Адресация в dbus трехуровневая.

Есть сервис, у которого может быть множество объектов, каждый объект может поддерживать множество интерфейсов, в каждом интерфейсе может быть множество методов и сигналов.

Т.е. для вызова метода нужно указать имя сервиса, путь до нужного объекта и название интерфейса, где находиться нужный метод.

В контексте Qt есть ли способ отслеживания, когда появляются новые сервисы, или только каждые n секунд пробегаться по всем сервисам единственный вариант?

Сервис org.freedesktop.DBus умеет посылать сигнал NameOwnerChanged, по которому можно отслеживать подключение/отключение сервисов к шине.

BRE ★★
()
Ответ на: комментарий от BRE

Т.е. для вызова метода нужно указать имя сервиса, путь до нужного объекта и название интерфейса, где находиться нужный метод.

Интересовал вопрос про объекты, реализующие один и тот же интерфейс. Т.е. если это разные процессы, то сервис должен быть другим, так?

UVV ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.