Что такое дерево объектов D-Bus? - PullRequest
1 голос
/ 19 мая 2019

Я прочитал много документации по D-Bus и понял различные понятия, такие как:

1. Object
2. Interface
3. Method
4. Signal
5. Bus Connection
6. System vs Session Daemon

Однако, читая ObjectManager :: GetManagedObjects Я столкнулся с этой концепцией "дерева объектов". Я знаю, что когда я вызываю вышеупомянутый метод для объекта службы, он дает мне все интерфейсы в дереве с объектом службы в качестве корня (поскольку объект службы реализует интерфейс ObjectManager из D-Bus).

Я бы хотел, чтобы кто-то очень четко объяснил, что это значит, когда один объект попадает «под» корневой объект в « дереве объектов»

  1. Являются ли дочерние объекты просто свойствами родительского объекта?
  2. Является ли дочерний объект подклассом родительского объекта (так же, как ООП)

Что такое дерево объектов D-Bus? Пожалуйста!

1 Ответ

2 голосов
/ 19 мая 2019

Семантика дерева объектов определяется конкретной службой, которая его предоставляет. По соглашению расположение объектов в дереве определяется только путем их объекта. Например, /org/freedesktop/Accounts/User1000 считается «дочерним объектом» /org/freedesktop/Accounts. Тем не менее, никаких формальных отношений за пределами этого нет.

Чтобы ответить на ваши конкретные вопросы:

  • Являются ли дочерние объекты просто свойствами родительского объекта? Нет, это отдельные объекты со своим набором свойств. Единственное, что у них общего с родителем, - это префикс их пути к объекту.
  • Является ли дочерний объект подклассом родительского объекта (точно так же как ООП)? Нет. Они могут реализовывать одни и те же интерфейсы, разные интерфейсы или что-то промежуточное. Как правило, они реализуют другой интерфейс - довольно часто родительский объект реализует интерфейс «менеджера», а дочерние объекты реализуют интерфейс «элемента» для описания коллекций элементов.
...