Класс 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.0/qdbusservicewatcher.html