Как экспортировать объект в пользовательский dbus с использованием Python? - PullRequest
3 голосов
/ 04 февраля 2012

Я хочу предоставить методы и сигналы dbus на пользовательской шине (т.е. не SessionBus или SystemBus). Если я запускаю тестовую копию dbus-daemon из командной строки, как описано в dbus-daemon man page , примерно так:

dbus-daemon --session --print-address

тогда это возвращает, например, адрес:

unix:abstract=/tmp/dbus-vthAiAw4am,guid=60da6b6ef244a0dbdb9710a800002218

Я могу использовать этот адрес в d-футах для "Подключиться к другой шине", и там ничего нет. Теперь я хотел бы запросить имя на этой шине и экспортировать объекты для предоставления методов и сигналов dbus с использованием Python. Я попытался прочитать код, стоящий за dbus.service.BusName, где я обычно проходил бы через сессионную или системную шину, но я просто заблудился. Кто-нибудь знает, как это сделать (если вообще возможно)?

1 Ответ

3 голосов
/ 07 февраля 2012

Просмотр исходного кода для d-футов, конечно, был более простым способом найти ответ, чем просмотр всей библиотеки dbus-python. Адрес, подобный указанному в вопросе, можно использовать при запросе имени шины, передав объект dbus.bus.BusConnection с адресом в качестве аргумента, например:

bus_name = dbus.service.BusName('my.testbus.test', 
    dbus.bus.BusConnection('unix:abstract=/tmp/dbus-vthAiAw4am'))

Затем я могу экспортировать методы и излучать сигналы на этой шине.

...