Как добавить объекты в сервис DBus из другого процесса / программы

Я создаю сервис DBus и добавляю к нему объекты.

QDBusConnection connection = QDBusConnection::sessionBus();
connection.registerService(serviceName); // name, e.g. "foo"QDBusConnection::sessionBus().registerObject(path, object, myoptions);

Хорошо, я могу видеть мои объекты в разделе «Сервис» на мониторе DBus. Теперь я хочу добавить больше объектов, но из другой программы (которая связана, но независима).

Там connection.registerService(serviceName); не удается, так как сервис уже существует. Как я смогу зарегистрировать больше объектов под тем же именем сервиса?

Предыстория: у меня есть клиенты, потребляющие услуги. Они делают не знать, кто предоставляет услуги, но только название службы. Поэтому они всегда ссылаются на одно и то же имя сервиса. Но несколько провайдеров должны предоставить услугу.

Я пытался не использовать имя службы (пустая строка, просто полагаясь на путь объекта). Но прокси на основе

QDBusAbstractInterface(serviceName, path, interfaceName.toUtf8().constData(), connection, parent)

не похоже на работу с пустым («») serviceName (правильный?).

0

Решение

вы не можете, одно соединение с dbus == одно имя. Соединения обычно представляют собой unix-сокеты или абстрактные сокеты (в linux). Вам нужно будет прокси-вызовы от первого соединения, используя какой-либо RPC (или вызов dbus) к другим сервисам, а также отвечать на результаты первого соединения.

1

Другие решения


По вопросам рекламы [email protected]