Spec-Zone.ru › Qt 5.15

Класс 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API