Класс QDBusServiceWatcher
Класс QDBusServiceWatcher позволяет следить за изменениями сервиса на шине. Подробнее...
| Заголовок: | #include <QDBusServiceWatcher> |
| CMake: | find_package(Qt6 COMPONENTS Dbus REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Dbus) |
| qmake: | QT += dbus |
| Наследует: | QObject |
Типы публичного доступа
| Флаги | 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.
Документация по свойствам
[bindable] watchMode : WatchMode
Примечание: Это свойство поддерживает привязку QProperty.
Это свойство содержит текущий режим наблюдения для этого объекта QDBusServiceWatcher.
Значение по умолчанию для этого свойства — QDBusServiceWatcher::WatchForOwnershipChange.
[bindable] watchedServices : QStringList
Примечание: Это свойство поддерживает привязку QProperty.
Это свойство содержит список отслеживаемых сервисов.
Примечание: Изменение этого списка с помощью setServicesWatched() — дорогостоящая операция. Если возможно, предпочтительнее изменять его с помощью addWatchedService() и removeWatchedService().
Документация по функциям членов
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(), и должна использоваться всякий раз, когда это возможно, для добавления служб.
Удаляет любое существующее связывание watchedServices.
QDBusConnection QDBusServiceWatcher::connection() const
Возвращает QDBusConnection, к которой прикреплен этот объект.
См. также setConnection().
bool QDBusServiceWatcher::removeWatchedService(const QString &service)
Удаляет service из списка служб, которые отслеживает этот объект. Обратите внимание, что уведомления D-Bus асинхронны, поэтому могут оставаться сигналы, ожидающие доставки о service. Эти сигналы всё равно будут излучаться всякий раз, когда сообщения D-Bus обрабатываются.
Удаляет любое существующее связывание watchedServices.
Эта функция возвращает 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.
См. также 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-6.2/qdbusservicewatcher.html