Класс 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::WatchMode флаги QDBusServiceWatcher::WatchModeFlag
QDBusServiceWatcher поддерживает три различных режима наблюдения, которые настраиваются этим флагом:
| Постоянная | Значение | Описание |
|---|---|---|
QDBusServiceWatcher::WatchForRegistration |
0x01 |
наблюдать только за регистрацией службы, игнорируя любые сигналы, связанные с другими изменениями владения службой. |
QDBusServiceWatcher::WatchForUnregistration |
0x02 |
наблюдать только за удалением службы, игнорируя любые сигналы, связанные с другими изменениями владения службой. |
QDBusServiceWatcher::WatchForOwnerChange |
0x03 |
наблюдать за любым изменением владения службой. |
Тип WatchMode является typedef для 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.15/qdbusservicewatcher.html