Класс QDBusConnectionInterface
Класс QDBusConnectionInterface предоставляет доступ к службе демона шины D-Bus. Подробнее...
| Заголовок: | #include <QDBusConnectionInterface> |
| qmake: | QT += dbus |
| С момента: | Qt 4.2 |
| Наследует: | QDBusAbstractInterface |
Этот класс был представлен в Qt 4.2.
Общедоступные типы
| Перечисление | RegisterServiceReply { ServiceNotRegistered, ServiceRegistered, ServiceQueued } |
| Перечисление | ServiceQueueOptions { DontQueueService, QueueService, ReplaceExistingService } |
| Перечисление | ServiceReplacementOptions { DontAllowReplacement, AllowReplacement } |
Свойства
- registeredServiceNames : const QDBusReply<QStringList>
Общедоступные слоты
| QDBusReply<bool> | isServiceRegistered(const QString &serviceName) const |
| QDBusReply<QDBusConnectionInterface::RegisterServiceReply> | registerService(const QString &serviceName, QDBusConnectionInterface::ServiceQueueOptions qoption = DontQueueService, QDBusConnectionInterface::ServiceReplacementOptions roption = DontAllowReplacement) |
| QDBusReply<QStringList> | registeredServiceNames() const |
| QDBusReply<QString> | serviceOwner(const QString &name) const |
| QDBusReply<uint> | servicePid(const QString &serviceName) const |
| QDBusReply<uint> | serviceUid(const QString &serviceName) const |
| QDBusReply<void> | startService(const QString &name) |
| QDBusReply<bool> | unregisterService(const QString &serviceName) |
Сигналы
| void | callWithCallbackFailed(const QDBusError &error, const QDBusMessage &call) |
| void | serviceRegistered(const QString &service) |
| void | serviceUnregistered(const QString &service) |
Подробное описание
Сервер демона шины D-Bus предоставляет один специальный интерфейс org.freedesktop.DBus, который позволяет клиентам получать доступ к определённым свойствам шины, таким как текущий список подключённых клиентов. Класс QDBusConnectionInterface предоставляет доступ к этому интерфейсу.
Наиболее распространённое использование этого класса заключается в регистрации и отмене регистрации имён служб в шине с помощью функций registerService() и unregisterService(), запросе информации о существующих именах с помощью функций isServiceRegistered(), registeredServiceNames() и serviceOwner(), а также получении уведомлений о регистрации или отмене регистрации клиента через сигналы serviceRegistered(), serviceUnregistered() и serviceOwnerChanged().
Документация по типам членов
Перечисление QDBusConnectionInterface::RegisterServiceReply
Возможные возвращаемые значения от registerService():
| Константа | Значение | Описание |
|---|---|---|
QDBusConnectionInterface::ServiceNotRegistered |
0 |
Вызов завершился ошибкой, и имя службы не было зарегистрировано. |
QDBusConnectionInterface::ServiceRegistered |
1 |
Вызывающий стал владельцем имени службы. |
QDBusConnectionInterface::ServiceQueued |
2 |
Вызывающий указал флаг QueueService, а служба уже была зарегистрирована, поэтому мы находимся в очереди. |
Сигнал serviceRegistered() будет выпущен, когда служба будет приобретена этим приложением.
Перечисление QDBusConnectionInterface::ServiceQueueOptions
Флаги для определения поведения регистрации службы в случае, если имя службы уже зарегистрировано.
| Константа | Значение | Описание |
|---|---|---|
QDBusConnectionInterface::DontQueueService |
0 |
Если приложение запрашивает имя, которое уже принадлежит другому приложению, не будет выполняться очередь. Вызов registeredService() просто завершится ошибкой. Это значение по умолчанию. |
QDBusConnectionInterface::QueueService |
1 |
Попытка зарегистрировать запрашиваемую службу, но не пытаться заменить её, если другое приложение уже зарегистрировало её. Вместо этого приложение просто помещается в очередь, пока не будет предоставлено имя. Сигнал serviceRegistered() будет отправлен, когда это произойдёт. |
QDBusConnectionInterface::ReplaceExistingService |
2 |
Если другое приложение уже зарегистрировало имя службы, попытаться заменить его. |
См. также ServiceReplacementOptions.
Перечисление QDBusConnectionInterface::ServiceReplacementOptions
Флаги для определения, должно ли приложение D-Bus сервера разрешать другому приложению заменить имя, которое это приложение зарегистрировало с помощью параметра ReplaceExistingService.
Возможные значения:
| Константа | Значение | Описание |
|---|---|---|
QDBusConnectionInterface::DontAllowReplacement |
0 |
Не разрешать другому приложению заменить нас. Службу необходимо явным образом удалить с помощью unregisterService(), чтобы другое приложение могло получить её. Это значение по умолчанию. |
QDBusConnectionInterface::AllowReplacement |
1 |
Разрешить другим приложениям заменить нас с помощью параметра ReplaceExistingService в registerService() без вмешательства. Если это произойдёт, будет отправлен сигнал serviceUnregistered(). |
См. также ServiceQueueOptions.
Документация по свойству
registeredServiceNames : const QDBusReply<QStringList>
содержит имена зарегистрированных служб
Список всех имен, в настоящее время зарегистрированных в шине.
Функции доступа:
| QDBusReply<QStringList> | registeredServiceNames() const |
Документация по функциям-членам
[signal] void QDBusConnectionInterface::callWithCallbackFailed(const QDBusError &error, const QDBusMessage &call)
Этот сигнал испускается, когда возникает ошибка во время вызова QDBusConnection::callWithCallback(). error указывает на ошибку. call — это сообщение, которое не удалось доставить.
См. также QDBusConnection::callWithCallback().
[slot] QDBusReply<bool> QDBusConnectionInterface::isServiceRegistered(const QString &serviceName) const
Возвращает true, если имя службы serviceName в данный момент зарегистрировано.
[slot] QDBusReply<QDBusConnectionInterface::RegisterServiceReply> QDBusConnectionInterface::registerService(const QString &serviceName, QDBusConnectionInterface::ServiceQueueOptions qoption = DontQueueService, QDBusConnectionInterface::ServiceReplacementOptions roption = DontAllowReplacement)
Запрос на регистрацию имени службы serviceName в шине. Флаг qoption определяет, как сервер D-Bus должен вести себя, если serviceName уже зарегистрировано. Флаг roption определяет, должен ли сервер разрешить другому приложению заменить наше зарегистрированное имя.
Если регистрация службы прошла успешно, будет испущен сигнал serviceRegistered(). Если мы попали в очередь, сигнал будет испущен, когда мы получим имя. Если roption равен AllowReplacement, сигнал serviceUnregistered() будет испущен, если другое приложение заменит это.
См. также unregisterService().
[slot] QDBusReply<QString> QDBusConnectionInterface::serviceOwner(const QString &name) const
Возвращает уникальное имя подключения основного владельца имени name. Если у запрошенного имени нет владельца, возвращается ошибка org.freedesktop.DBus.Error.NameHasNoOwner.
[slot] QDBusReply<uint> QDBusConnectionInterface::servicePid(const QString &serviceName) const
Возвращает идентификатор процесса Unix (PID) процесса, который в данный момент владеет службой шины serviceName.
[signal] void QDBusConnectionInterface::serviceRegistered(const QString &service)
Этот сигнал испускается сервером D-Bus, когда имя службы шины (уникальное имя подключения или известное имя службы), заданное service, получено этим приложением.
Получение происходит после того, как это приложение запросило имя с помощью registerService().
[slot] QDBusReply<uint> QDBusConnectionInterface::serviceUid(const QString &serviceName) const
Возвращает идентификатор пользователя Unix (UID) процесса, который в данный момент владеет службой шины serviceName.
[signal] void QDBusConnectionInterface::serviceUnregistered(const QString &service)
Этот сигнал испускается сервером D-Bus, когда это приложение теряет владение именем службы шины, заданным service.
[slot] QDBusReply<void> QDBusConnectionInterface::startService(const QString &name)
Запрашивает, чтобы шина запустила службу, заданную именем name.
[slot] QDBusReply<bool> QDBusConnectionInterface::unregisterService(const QString &serviceName)
Освобождает владение именем службы шины serviceName, которое было ранее зарегистрировано с помощью registerService(). Если у этого приложения было владение именем, оно будет освобождено для других приложений, чтобы они его захватили. Если у него было только имя в очереди, оно отказывается от своего места в очереди.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qdbusconnectioninterface.html