2015-02-12 2 views
0

Я создаю службу 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 (правильно?).

ответ

1

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

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

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