Дети объекта DBus - PullRequest
       10

Дети объекта DBus

1 голос
/ 11 марта 2011

Я пытаюсь написать объект dbus, который экспортирует пользователей и создал мой объект в / path / to / users.Этот объект имеет такие сигналы, как «добавленный пользователем», «удаленный пользователем» и т. Д.

Затем я хочу предоставить доступ каждому из этих пользователей по адресу / path / to / users / [a, b, c] для пользователей a, b и c, которые будут иметь несколько методов для каждого пользователя.

Мой вопрос, однако, заключается в том, как мне «перечислить» путь / путь / к / пользователям для возврата a, b, c?

Является ли мой единственный вариант, возвращающий массив путей из пути.to.users.ListUsers (), есть ли стандартный интерфейс, который я могу унаследовать, или какая-то форма самоанализа?

Спасибо.

nb.Я делаю это в Python, но я думаю, что вопрос не зависит от языка

1 Ответ

1 голос
/ 12 марта 2011

Стандартный стандартный интроспективный интерфейс D-Bus предоставляет метод для интроспекции объекта; данные, возвращаемые им , включают список объектов.

Большинство привязок D-Bus, включая dbus-python, реализуют Introspectable на стороне обслуживания для вас; поэтому ваш клиент должен иметь возможность вызывать метод Introspect для объекта в /path/to/users, чтобы увидеть, какие пользовательские объекты существуют. Я не знаю, если dbus-python обеспечивает более приятный интерфейс для этих данных. Лично я бы реализовал метод ListUsers(), который возвращает a{oa{sv}}, то есть список путей к объектам, а также некоторые свойства этих объектов (скажем, эквивалент вызова Properties.GetAll("uk.co.example.MyService.User") для каждого объекта).

(Если вас интересует будущее, Дэвид Зеутан предложил стандартизировать что-то подобное.)

...