Класс QDBusServiceWatcher
Класс QDBusServiceWatcher позволяет следить за изменениями сервиса на шине. Подробнее...
| Заголовок: | #include <QDBusServiceWatcher> |
| qmake: | QT += dbus |
| С момента: | Qt 4.6 |
| Наследует: | QObject |
Этот класс был представлен в Qt 4.6.
Общедоступные типы
| флаги | WatchMode |
| перечисление | WatchModeFlag { WatchForRegistration, WatchForUnregistration, WatchForOwnerChange } |
Свойства
- watchMode : WatchMode
- watchedServices : QStringList
Общедоступные функции
| QDBusServiceWatcher(const QString &service, const QDBusConnection &connection, QDBusServiceWatcher::WatchMode watchMode = WatchForOwnerChange, QObject *parent = nullptr) | |
| QDBusServiceWatcher(QObject *parent = nullptr) | |
| virtual | ~QDBusServiceWatcher() |
| void | addWatchedService(const QString &newService) |
| QDBusConnection | connection() const |
| bool | removeWatchedService(const QString &service) |
| void | setConnection(const QDBusConnection &connection) |
| void | setWatchMode(QDBusServiceWatcher::WatchMode mode) |
| void | setWatchedServices(const QStringList &services) |
| QDBusServiceWatcher::WatchMode | watchMode() const |
| QStringList | watchedServices() const |
Сигналы
| void | serviceOwnerChanged(const QString &serviceName, const QString &oldOwner, const QString &newOwner) |
| void | serviceRegistered(const QString &serviceName) |
| void | serviceUnregistered(const QString &serviceName) |
Подробное описание
Объект QDBusServiceWatcher может уведомлять приложение об изменении владельца имени сервиса на шине. Он имеет три режима наблюдения:
- Наблюдение только за регистрацией сервиса.
- Наблюдение только за удалением сервиса.
- Наблюдение за любым изменением владельца сервиса (по умолчанию).
Помимо создания или удаления, сервисы могут менять владельцев без операций unregister/register. Поэтому сигналы serviceRegistered() и serviceUnregistered() могут не быть вызваны в таких случаях.
Этот класс более эффективен, чем использование сигнала QDBusConnectionInterface::serviceOwnerChanged(), поскольку он позволяет получать только сигналы, которые нас интересуют.
Окончание имени сервиса символом «*» будет соответствовать всем именам сервисов в указанном пространстве имен.
Например, «com.example.backend1*» будет соответствовать:
- com.example.backend1
- com.example.backend1.foo
- com.example.backend1.foo.bar
Подстроки в том же домене не будут соответствовать, т. е. «com.example.backend12».
См. также QDBusConnection.
Документация по типам членов
перечисление QDBusServiceWatcher::WatchModeFlagфлаги QDBusServiceWatcher::WatchMode
QDBusServiceWatcher поддерживает три различных режима наблюдения, которые настраиваются с помощью этого флага:
| Константа | Значение | Описание |
|---|---|---|
QDBusServiceWatcher::WatchForRegistration |
0x01 |
следить только за регистрацией сервиса, игнорируя любые сигналы, относящиеся к другим изменениям владельца сервиса. |
QDBusServiceWatcher::WatchForUnregistration |
0x02 |
следить только за удалением сервиса, игнорируя любые сигналы, относящиеся к другим изменениям владельца сервиса. |
QDBusServiceWatcher::WatchForOwnerChange |
0x03 |
следить за любыми изменениями владельца сервиса. |
Тип WatchMode — это псевдоним для QFlags<WatchModeFlag>. Он хранит логическое ИЛИ сочетание значений WatchModeFlag.
Документация свойств
watchMode : WatchMode
Свойство watchMode содержит текущий режим наблюдения для этого объекта QDBusServiceWatcher. Значение по умолчанию для этого свойства — QDBusServiceWatcher::WatchForOwnershipChange.
Функции доступа:
| QDBusServiceWatcher::WatchMode | watchMode() const |
| void | setWatchMode(QDBusServiceWatcher::WatchMode mode) |
watchedServices : QStringList
Свойство servicesWatched содержит список отслеживаемых сервисов.
Обратите внимание, что изменение этого списка с помощью setServicesWatched() — это дорогостоящая операция. Если возможно, предпочитайте изменять его с помощью addWatchedService() и removeWatchedService().
Функции доступа:
| QStringList | watchedServices() const |
| void | setWatchedServices(const QStringList &services) |
Документация функций-членов
QDBusServiceWatcher::QDBusServiceWatcher(const QString &service, const QDBusConnection &connection, QDBusServiceWatcher::WatchMode watchMode = WatchForOwnerChange, QObject *parent = nullptr)
Создаёт объект QDBusServiceWatcher и прикрепляет его к подключению connection. Также эта функция сразу начинает следить за изменениями watchMode для сервиса service.
Параметр parent передаётся в QObject для установки родительского объекта для данного объекта.
QDBusServiceWatcher::QDBusServiceWatcher(QObject *parent = nullptr)
Создаёт объект QDBusServiceWatcher. Обратите внимание, что пока вы не зададите подключение с помощью setConnection(), этот объект не будет генерировать никаких сигналов.
Параметр parent передаётся в QObject для установки родительского объекта для данного объекта.
[signal] void QDBusServiceWatcher::serviceOwnerChanged(const QString &serviceName, const QString &oldOwner, const QString &newOwner)
Этот сигнал генерируется всякий раз, когда этот объект определяет, что произошло изменение владельца сервиса, связанного с сервисом serviceName. Параметр oldOwner содержит старое имя владельца, а newOwner — новое имя владельца. И oldOwner, и newOwner — уникальные имена подключений.
Обратите внимание, что этот сигнал также испускается всякий раз, когда служба serviceName регистрируется или отменяется регистрацию. Если она зарегистрирована, oldOwner будет содержать пустую строку, а если она отменена регистрацию, newOwner будет содержать пустую строку.
Если вам нужно только узнать, зарегистрирована или отменена регистрация службы, не получая уведомления о том, что владение изменилось, рассмотрите использование специальных режимов для этих операций. Этот класс более эффективен, если вы используете более специфичные режимы.
См. также serviceRegistered() и serviceUnregistered().
[signal] void QDBusServiceWatcher::serviceRegistered(const QString &serviceName)
Этот сигнал испускается всякий раз, когда этот объект определяет, что служба serviceName стала доступной в шине.
См. также serviceUnregistered() и serviceOwnerChanged().
[signal] void QDBusServiceWatcher::serviceUnregistered(const QString &serviceName)
Этот сигнал испускается всякий раз, когда этот объект определяет, что служба serviceName была отменена регистрацию в шине и больше недоступна.
См. также serviceRegistered() и serviceOwnerChanged().
[virtual] QDBusServiceWatcher::~QDBusServiceWatcher()
Уничтожает объект QDBusServiceWatcher и освобождает все ресурсы, связанные с ним.
void QDBusServiceWatcher::addWatchedService(const QString &newService)
Добавляет newService в список служб, которые должен отслеживать этот объект. Эта функция более эффективна, чем setWatchedServices() и должна использоваться всякий раз, когда это возможно, для добавления служб.
QDBusConnection QDBusServiceWatcher::connection() const
Возвращает QDBusConnection, к которому прикреплен этот объект.
См. также setConnection().
bool QDBusServiceWatcher::removeWatchedService(const QString &service)
Удаляет service из списка служб, отслеживаемых этим объектом. Обратите внимание, что уведомления D-Bus асинхронны, поэтому могут быть ещё сигналы, ожидающие доставки, касающиеся service. Эти сигналы все равно будут испущены при обработке сообщений D-Bus.
Эта функция возвращает true если какие-либо службы были удалены.
void QDBusServiceWatcher::setConnection(const QDBusConnection &connection)
Устанавливает подключение D-Bus, к которому прикреплён этот объект, в connection. Все отслеживаемые службы будут перенесены в это подключение.
Обратите внимание, что объекты QDBusConnection имеют счетчик ссылок: QDBusServiceWatcher будет хранить ссылку на это подключение, пока оно существует. Подключение не закрывается, пока счетчик ссылок не опустится до нуля, что гарантирует получение любых уведомлений, пока существует объект QDBusServiceWatcher.
См. также connection().
void QDBusServiceWatcher::setWatchedServices(const QStringList &services)
Устанавливает список служб D-Bus, которые отслеживаются, в services.
Обратите внимание, что установка всего списка означает удаление всех предыдущих правил отслеживания служб и добавление новых. Это дорогостоящая операция, и её следует избегать, если возможно. Вместо этого используйте addWatchedService() и removeWatchedService(), если вы можете манипулировать элементами в списке.
Примечание: Функция-сеттер для свойства watchedServices.
См. также watchedServices().
QStringList QDBusServiceWatcher::watchedServices() const
Возвращает список служб D-Bus, которые отслеживаются.
Примечание: Функция-геттер для свойства watchedServices.
См. также setWatchedServices().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qdbusservicewatcher.html