Класс 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.
Документация по свойству
watchMode : WatchMode
Это свойство содержит текущий режим слежения для объекта QDBusServiceWatcher.
Значение по умолчанию для этого свойства — QDBusServiceWatcher::WatchForOwnershipChange.
Функции доступа:
| QDBusServiceWatcher::WatchMode | watchMode() const |
| void | setWatchMode(QDBusServiceWatcher::WatchMode mode) |
watchedServices : QStringList
Это свойство содержит список отслеживаемых служб.
Примечание: Изменение этого списка с помощью 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-6.1/qdbusservicewatcher.html