Использование адаптеров QtDBus
Адаптеры - специальные классы, которые присоединены к любому унаследованному от QObject классу и предоставляют интерфейс для использования D-Bus из-вне. Адаптеры задумывались как небольшие классы, главная цель которых заключается в передаче вызовов в/из реального объекта, с возможной проверкой правильности или преобразованием ввода из-вне и, таким образом, защите реального объекта.
В отличие от множественного наследования, адаптеры можно добавить в любое время к любому объекту (но не удалить), что предоставляет большую гибкость экспорта существующих классов. Другим преимуществом адаптеров является предоставление более простой функциональности, но не идентичной функциональности методов с одинаковым именем в разных интерфейсах, случай, который может запросто произойти при добавлении новой версии стандартного интерфейса в объект.
Для того, чтобы использовать адаптер его нужно создать класс, который унаследован от QDBusAbstractAdaptor. Поскольку это стандартный класс, производный от QObject, то в декларации должен фигурировать макрос Q_OBJECT, а файл с исходным кодом - обработан с помощью инструмента moc. The class must also contain one or more Q_CLASSINFO entries with the "D-Bus Interface" name, declaring which interfaces it is exporting.
Любой открытый слот в классе будет доступен посредством шины (bus) через сообщения типа MethodCall. (Для получения дополнительной информации смотрите Объявление слотов в адаптерах D-Bus). Сигналы в классе будут автоматически переданы через D-Bus. Однако, разрешены не все типы списков параметров сигналов или слотов: дополнительную информацию смотрите в Система типов QtDBus.
Кроме того, любое свойство, объявленное с помощью Q_PROPERTY, будет автоматически сделан видимым через интерфейс Properties D-Bus. Поскольку система свойств QObject не разрешает нечитаемые свойства, то используя адаптеры нельзя объявить свойства только для записи.
Дополнительная информация:
Смотрите также QDBusAbstractAdaptor.
|