D-Bus: экспорт объекта без ObjectManager - PullRequest
2 голосов
/ 29 февраля 2012

Я хочу создать объект и экспортировать его в D-Bus. Точнее, я использую gdbus и генерирую код объекта с помощью gdbus-codegen.

Пример на странице glib (объекты животных и кошек) показывает только то, как объект экспортируется с помощью менеджера объектов. Спецификация D-Bus предлагает использовать ObjectManager, только если есть действительно несколько объектов для управления. Поскольку у меня есть только один объект, я не хочу использовать издержки ObjectManager.

В моем приложении (которое содержит объекты) я уже:

  1. Открыть соединение 'g_bus_own_name'

  2. Получение обратного вызова, полученного шиной: 'on_bus_acquired'

Что мне теперь делать, чтобы создать и экспортировать мой объект? Когда я вызываю '... _skeleton_new()', я думаю, что создаю новый объект ' service-side ', это правильно? «g_dbus_connection_register_object» правильный путь? Если да, есть ли хороший пример, где все параметры, которые я должен передать?

Надеюсь, кто-нибудь может мне помочь:)

С наилучшими пожеланиями Jean-Pierre

1 Ответ

2 голосов
/ 16 июня 2013

Я думаю, что уже слишком поздно для ответа, но может быть полезно для кого-то еще, кто не хочет используйте GDBusObjectManager.

Нет необходимости регистрировать объект интерфейса, созданный с помощью ..._skeleton_new();, просто экспортируйте его с помощью g_dbus_interface_skeleton_export();

У меня было такое же требование, как и у вас, и я запутался в том, чтобы зарегистрироваться или нет.

Наконец с некоторым анализом кода обнаружил, что g_dbus_interface_skeleton_export() внутренне регистрирует объект интерфейса.

Спасибо AruN

...