Класс QDBusMessage
Класс QDBusMessage представляет собой одно сообщение, отправленное или полученное через шину D-Bus. Подробнее...
| Заголовок: | #include <QDBusMessage> |
| CMake: | find_package(Qt6 COMPONENTS Dbus REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Dbus) |
| qmake: | QT += dbus |
Типы Public
| Перечисление | MessageType { MethodCallMessage, SignalMessage, ReplyMessage, ErrorMessage, InvalidMessage } |
Функции Public
| QDBusMessage(const QDBusMessage &other) | |
| QDBusMessage() | |
| QDBusMessage & | operator=(const QDBusMessage &other) |
| ~QDBusMessage() | |
| QList<QVariant> | arguments() const |
| bool | autoStartService() const |
| QDBusMessage | createErrorReply(const QString &name, const QString &msg) const |
| QDBusMessage | createErrorReply(const QDBusError &error) const |
| QDBusMessage | createErrorReply(QDBusError::ErrorType type, const QString &msg) const |
| QDBusMessage | createReply(const QList<QVariant> &arguments = QList<QVariant>()) const |
| QDBusMessage | createReply(const QVariant &argument) const |
| QString | errorMessage() const |
| QString | errorName() const |
| QString | interface() const |
| bool | isDelayedReply() const |
| bool | isInteractiveAuthorizationAllowed() const |
| bool | isReplyRequired() const |
| QString | member() const |
| QString | path() const |
| QString | service() const |
| void | setArguments(const QList<QVariant> &arguments) |
| void | setAutoStartService(bool enable) |
| void | setDelayedReply(bool enable) const |
| void | setInteractiveAuthorizationAllowed(bool enable) |
| QString | signature() const |
| void | swap(QDBusMessage &other) |
| QDBusMessage::MessageType | type() const |
| QDBusMessage & | operator<<(const QVariant &arg) |
Статические члены Public
| QDBusMessage | createError(const QString &name, const QString &msg) |
| QDBusMessage | createError(const QDBusError &error) |
| QDBusMessage | createError(QDBusError::ErrorType type, const QString &msg) |
| QDBusMessage | createMethodCall(const QString &service, const QString &path, const QString &interface, const QString &method) |
| QDBusMessage | createSignal(const QString &path, const QString &interface, const QString &name) |
| QDBusMessage | createTargetedSignal(const QString &service, const QString &path, const QString &interface, const QString &name) |
Подробное описание
Этот объект может представлять любой из четырех разных типов сообщений (MessageType), которые могут возникнуть в шине:
- Вызовы методов
- Возвращаемые значения методов
- Выбросы сигналов
- Коды ошибок
Объекты этого типа создаются с помощью статических функций createError(), createMethodCall() и createSignal(). Используйте функцию QDBusConnection::send() для отправки сообщений.
Документация по типам членов
Перечисление QDBusMessage::MessageType
Возможные типы сообщений:
| Константа | Значение | Описание |
|---|---|---|
QDBusMessage::MethodCallMessage |
1 |
сообщение, представляющее исходящий или входящий вызов метода |
QDBusMessage::SignalMessage |
4 |
сообщение, представляющее исходящий или входящий выброс сигнала |
QDBusMessage::ReplyMessage |
2 |
сообщение, представляющее возвращаемые значения вызова метода |
QDBusMessage::ErrorMessage |
3 |
сообщение, представляющее условие ошибки в ответ на вызов метода |
QDBusMessage::InvalidMessage |
0 |
неверное сообщение: это никогда не устанавливается для сообщений, полученных от D-Bus |
Документация по функциям-членам
QDBusMessage::QDBusMessage(const QDBusMessage &other)
Создает копию объекта, заданного other.
Примечание: объекты QDBusMessage совместно используются. Изменения, внесенные в копию, также повлияют на исходный объект. Дополнительную информацию см. в setDelayedReply().
QDBusMessage::QDBusMessage()
Создает пустой, недействительный объект QDBusMessage.
См. также createError(), createMethodCall() и createSignal().
QDBusMessage &QDBusMessage::operator=(const QDBusMessage &other)
Копирует содержимое объекта, заданного other.
Примечание: объекты QDBusMessage являются общими. Изменения, внесённые в копию, также повлияют на исходный объект. Дополнительную информацию см. в setDelayedReply().
QDBusMessage::~QDBusMessage()
Удаляет объект и освобождает все занятые ресурсы.
QList<QVariant> QDBusMessage::arguments() const
Возвращает список аргументов, которые будут отправлены или были получены с D-Bus.
См. также setArguments().
bool QDBusMessage::autoStartService() const
Возвращает флаг автоматического запуска, заданный с помощью setAutoStartService(). По умолчанию этот флаг равен true, что означает, что Qt D-Bus автоматически запустит службу, если она ещё не запущена.
См. также setAutoStartService().
[static] QDBusMessage QDBusMessage::createError(const QString &name, const QString &msg)
Создаёт новый сообщение DBus, представляющее ошибку с заданным значением name и msg.
[static] QDBusMessage QDBusMessage::createError(const QDBusError &error)
Создаёт новое сообщение DBus, представляющее заданную ошибку error.
[static] QDBusMessage QDBusMessage::createError(QDBusError::ErrorType type, const QString &msg)
Создаёт новое сообщение DBus для типа ошибки type, используя сообщение msg. Возвращает сообщение DBus.
QDBusMessage QDBusMessage::createErrorReply(const QString &name, const QString &msg) const
Создаёт новое сообщение DBus, представляющее ответ с ошибкой, с заданным значением name и msg.
QDBusMessage QDBusMessage::createErrorReply(const QDBusError &error) const
Создаёт новое сообщение DBus, представляющее ответ с ошибкой, из объекта error.
QDBusMessage QDBusMessage::createErrorReply(QDBusError::ErrorType type, const QString &msg) const
Создаёт новый ответ DBus на ошибку типа type, используя сообщение msg. Возвращает сообщение DBus.
[static] QDBusMessage QDBusMessage::createMethodCall(const QString &service, const QString &path, const QString &interface, const QString &method)
Создаёт новое сообщение DBus, представляющее вызов метода. Вызов метода всегда сообщает свой адрес назначения (service, path, interface и method).
Автобус DBus позволяет вызывать метод на заданном удалённом объекте без указания целевого интерфейса, если имя метода уникально. Однако, если два интерфейса на удалённом объекте экспортируют одно и то же имя метода, результат не определён (может быть вызван один из них или возвращена ошибка).
При использовании DBus в контексте peer-to-peer (то есть не на шине), параметр service необязателен.
Класс QDBusInterface предоставляет более простое абстрагирование для синхронного вызова методов.
Эта функция возвращает объект QDBusMessage, который можно отправить с помощью QDBusConnection::call().
QDBusMessage QDBusMessage::createReply(const QList<QVariant> &arguments = QList<QVariant>()) const
Создаёт новое сообщение DBus, представляющее ответ с заданными arguments.
QDBusMessage QDBusMessage::createReply(const QVariant &argument) const
Создаёт новое сообщение DBus, представляющее ответ с заданным argument.
[static] QDBusMessage QDBusMessage::createSignal(const QString &path, const QString &interface, const QString &name)
Создаёт новое сообщение DBus с заданным path, interface и name, представляющее событие сигнала.
Сигнал DBus излучается одним приложением и принимается всеми приложениями, которые слушают этот сигнал от этого интерфейса.
Возвращаемый объект QDBusMessage можно отправить, используя функцию QDBusConnection::send().
[static, since 5.6] QDBusMessage QDBusMessage::createTargetedSignal(const QString &service, const QString &path, const QString &interface, const QString &name)
Создаёт новое сообщение DBus с заданными path, interface и name, представляющее событие сигнала для определённого получателя.
Сигнал DBus излучается одним приложением и принимается только приложением, владеющим именем целевого service.
Эта функция была добавлена в Qt 5.6.
QString QDBusMessage::errorMessage() const
Возвращает удобочитаемое сообщение, связанное с полученной ошибкой.
QString QDBusMessage::errorName() const
Возвращает имя полученной ошибки.
QString QDBusMessage::interface() const
Возвращает интерфейс вызываемого метода (в случае вызова метода) или интерфейс сигнала, полученного из.
bool QDBusMessage::isDelayedReply() const
Возвращает флаг отложенного ответа, заданный с помощью setDelayedReply(). По умолчанию этот флаг равен false, что означает, что Qt D-Bus будет генерировать автоматические ответы при необходимости.
[since 5.12] bool QDBusMessage::isInteractiveAuthorizationAllowed() const
Возвращает флаг разрешения интерактивной авторизации, заданный с помощью setInteractiveAuthorizationAllowed(). По умолчанию этот флаг равен false, и ожидается, что другой конец выполнит любые решения по авторизации не интерактивно и немедленно.
Эта функция была добавлена в Qt 5.12.
См. также setInteractiveAuthorizationAllowed().
bool QDBusMessage::isReplyRequired() const
Возвращает флаг, указывающий, нужно ли отвечать на это сообщение. Это имеет смысл только для сообщений вызова метода: другие типы сообщений не могут иметь ответы, и эта функция всегда вернёт false для них.
QString QDBusMessage::member() const
Возвращает имя события сигнала, которое было излучено, или имя метода, который был вызван.
QString QDBusMessage::path() const
Возвращает путь объекта, к которому отправляется это сообщение (в случае вызова метода) или от которого получено (для сигнала).
QString QDBusMessage::service() const
Возвращает имя службы или адрес шины удалённого вызова метода.
void QDBusMessage::setArguments(const QList<QVariant> &arguments)
Устанавливает аргументы, которые будут отправлены через D-Bus в arguments. Это будут аргументы вызова метода или параметры в сигнале.
См. также arguments().
void QDBusMessage::setAutoStartService(bool enable)
Устанавливает флаг автоматического запуска на enable. Этот флаг имеет смысл только для сообщений вызова метода, где он сообщает серверу D-Bus либо автоматически запустить службу, ответственную за имя службы, либо не запускать её.
По умолчанию этот флаг равен true, т.е. служба запускается автоматически. Это означает:
Когда служба, к которой направляется этот вызов метода, уже запущена, вызов метода отправляется ей. Если служба еще не запущена, демон D-Bus запрашивает автоматический запуск службы, назначенной этому имени службы. Это обрабатывается файлами .service, которые размещаются в каталоге, известном серверу D-Bus. Эти файлы содержат имя службы и путь к программе, которая должна быть выполнена при запросе этого имени службы.
См. также autoStartService().
void QDBusMessage::setDelayedReply(bool enable) const
Устанавливает, будет ли ответ на сообщение отправлен позже (если enable истинно) или Qt D-Bus сгенерирует автоматический ответ (если enable ложно).
В D-Bus все вызовы методов должны генерировать ответ вызывающему объекту, если вызывающий объект явно не указывает иное (см. isReplyRequired()). QtDBus автоматически генерирует такие ответы для вызываемых слотов, но также позволяет слотам указывать, будут ли они отвечать за отправку ответа в более позднее время, после завершения обработки функции.
См. также isDelayedReply() и Отложенные ответы.
[since 5.12] void QDBusMessage::setInteractiveAuthorizationAllowed(bool enable)
Устанавливает флаг интерактивного авторизации в значение enable. Этот флаг имеет смысл только для сообщений о вызове метода, где он сообщает серверу D-Bus, что вызывающий метод готов ждать интерактивной авторизации (например, через Polkit) перед фактической обработкой метода.
По умолчанию этот флаг равен false, и ожидается, что другая сторона примет любые решения об авторизации без взаимодействия и незамедлительно.
Ошибка org.freedesktop.DBus.Error.InteractiveAuthorizationRequired указывает на то, что авторизация не удалась, но могла бы увенчаться успехом, если бы этот флаг был установлен.
Эта функция была представлена в Qt 5.12.
См. также isInteractiveAuthorizationAllowed().
QString QDBusMessage::signature() const
Возвращает сигнатуру полученного сигнала или выходных аргументов вызова метода.
void QDBusMessage::swap(QDBusMessage &other)
Меняет местами этот экземпляр QDBusMessage с other.
QDBusMessage::MessageType QDBusMessage::type() const
Возвращает тип сообщения.
QDBusMessage &QDBusMessage::operator<<(const QVariant &arg)
Добавляет аргумент arg в список аргументов, которые будут отправлены по D-Bus в вызове метода или генерации сигнала.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qdbusmessage.html