Класс QDBusConnection
Класс QDBusConnection представляет собой соединение с демоном шины D-Bus. Подробнее...
| Заголовок: | #include <QDBusConnection> |
| qmake: | QT += dbus |
| С момента: | Qt 4.2 |
Этот класс был представлен в Qt 4.2.
Общедоступные типы
| перечисление | Тип шины { SessionBus, SystemBus, ActivationBus } |
| флаги | Возможности соединения |
| перечисление | Возможность соединения { UnixFileDescriptorPassing } |
| перечисление | Параметр регистрации { ExportAdaptors, ExportScriptableSlots, ExportScriptableSignals, ExportScriptableProperties, ..., ExportChildObjects } |
| флаги | Параметры регистрации |
| перечисление | Режим отмены регистрации { UnregisterNode, UnregisterTree } |
| флаги | Параметры регистрации виртуального объекта |
Общедоступные функции
| QDBusConnection(const QDBusConnection &other) | |
| QDBusConnection(const QString &name) | |
| QDBusConnection & | operator=(const QDBusConnection &other) |
| ~QDBusConnection() | |
| QDBusPendingCall | asyncCall(const QDBusMessage &message, int timeout = -1) const |
| QString | baseService() const |
| QDBusMessage | call(const QDBusMessage &message, QDBus::CallMode mode = QDBus::Block, int timeout = -1) const |
| bool | callWithCallback(const QDBusMessage &message, QObject *receiver, const char *returnMethod, const char *errorMethod, int timeout = -1) const |
| bool | connect(const QString &service, const QString &path, const QString &interface, const QString &name, QObject *receiver, const char *slot) |
| bool | connect(const QString &service, const QString &path, const QString &interface, const QString &name, const QString &signature, QObject *receiver, const char *slot) |
| bool | connect(const QString &service, const QString &path, const QString &interface, const QString &name, const QStringList &argumentMatch, const QString &signature, QObject *receiver, const char *slot) |
| QDBusConnection::ConnectionCapabilities | connectionCapabilities() const |
| bool | disconnect(const QString &service, const QString &path, const QString &interface, const QString &name, QObject *receiver, const char *slot) |
| bool | disconnect(const QString &service, const QString &path, const QString &interface, const QString &name, const QString &signature, QObject *receiver, const char *slot) |
| bool | disconnect(const QString &service, const QString &path, const QString &interface, const QString &name, const QStringList &argumentMatch, const QString &signature, QObject *receiver, const char *slot) |
| QDBusConnectionInterface * | interface() const |
| bool | isConnected() const |
| QDBusError | lastError() const |
| QString | name() const |
| QObject * | objectRegisteredAt(const QString &path) const |
| bool | registerObject(const QString &path, QObject *object, QDBusConnection::RegisterOptions options = ExportAdaptors) |
| bool | registerObject(const QString &path, const QString &interface, QObject *object, QDBusConnection::RegisterOptions options = ExportAdaptors) |
| bool | registerService(const QString &serviceName) |
| bool | send(const QDBusMessage &message) const |
| void | swap(QDBusConnection &other) |
| void | unregisterObject(const QString &path, QDBusConnection::UnregisterMode mode = UnregisterNode) |
| bool | unregisterService(const QString &serviceName) |
Статические общедоступные члены
| QDBusConnection | connectToBus(QDBusConnection::BusType type, const QString &name) |
| QDBusConnection | connectToBus(const QString &address, const QString &name) |
| QDBusConnection | connectToPeer(const QString &address, const QString &name) |
| void | disconnectFromBus(const QString &name) |
| void | disconnectFromPeer(const QString &name) |
| QByteArray | localMachineId() |
| QDBusConnection | sessionBus() |
| QDBusConnection | systemBus() |
Подробное описание
Этот класс является исходной точкой в сессии D-Bus. С его помощью можно получить доступ к удаленным объектам, интерфейсам; подключить удалённые сигналы к слотам вашего объекта; зарегистрировать объекты и т.д.
Соединения D-Bus создаются с помощью функции connectToBus(), которая открывает соединение с демоном-сервером и выполняет начальный обмен данными, связывая это соединение с именем. Дальнейшие попытки подключения с использованием того же имени вернут то же соединение.
Соединение затем разрывается с помощью функции disconnectFromBus().
После разъединения вызов connectToBus() не восстановит соединение, необходимо создать новый экземпляр QDBusConnection.
Для удобства работы с двумя наиболее распространёнными типами соединений функции sessionBus() и systemBus() возвращают открытые соединения с демоном-сервером сессии и демоном-сервером системы соответственно. Эти соединения открываются при первом использовании и закрываются при выполнении деструктора QCoreApplication.
D-Bus также поддерживает соединения «точка-точка» без необходимости в демоне-сервере шины. Используя эту возможность, две программы могут взаимодействовать и обмениваться сообщениями. Этого можно добиться, передав адрес в функцию connectToBus(), который был открыт другой программой D-Bus с помощью QDBusServer.
Документация по типам членов
enum QDBusConnection::BusType
Определяет тип соединения шины. Допустимые типы шины:
| Константа | Значение | Описание |
|---|---|---|
QDBusConnection::SessionBus |
0 |
шина сеанса, связанная с текущей сессией рабочего стола |
QDBusConnection::SystemBus |
1 |
шина системы, используемая для взаимодействия с системными процессами |
QDBusConnection::ActivationBus |
2 |
шина активации, «псевдоним» шины, которая запустила службу |
В шине сеанса можно найти другие приложения одного пользователя, которые используют ту же сессию рабочего стола (отсюда и название). Однако в шине системы, как правило, находятся общие для всей системы процессы.
enum QDBusConnection::ConnectionCapabilityflags QDBusConnection::ConnectionCapabilities
Этот перечисление описывает доступные возможности для соединения D-Bus.
| Константа | Значение | Описание |
|---|---|---|
QDBusConnection::UnixFileDescriptorPassing |
0x0001 |
разрешает передачу дескрипторов Unix-файлов другим процессам (см. QDBusUnixFileDescriptor) |
Это перечисление было введено или изменено в Qt 4.8.
Тип ConnectionCapabilities является типом-псевдонимом для QFlags<ConnectionCapability>. Он хранит логическое ИЛИ комбинацию значений ConnectionCapability.
См. также connectionCapabilities().
enum QDBusConnection::RegisterOptionflags QDBusConnection::RegisterOptions
Определяет параметры для регистрации объектов с соединением. Возможные значения:
| Константа | Значение | Описание |
|---|---|---|
QDBusConnection::ExportAdaptors |
0x01 |
экспортировать содержимое адаптеров, найденных в этом объекте |
QDBusConnection::ExportScriptableSlots |
0x10 |
экспортировать слоты скрипта этого объекта |
QDBusConnection::ExportScriptableSignals |
0x20 |
экспортировать сигналы скрипта этого объекта |
QDBusConnection::ExportScriptableProperties |
0x40 |
экспортировать свойства скрипта этого объекта |
QDBusConnection::ExportScriptableInvokables |
0x80 |
экспортировать вызываемые элементы скрипта этого объекта |
QDBusConnection::ExportScriptableContents |
0xf0 |
краткая форма для ExportScriptableSlots | ExportScriptableSignals | ExportScriptableProperties |
QDBusConnection::ExportNonScriptableSlots |
0x100 |
экспортировать слоты не скриптовых элементов этого объекта |
QDBusConnection::ExportNonScriptableSignals |
0x200 |
экспортировать сигналы не скриптовых элементов этого объекта |
QDBusConnection::ExportNonScriptableProperties |
0x400 |
экспортировать свойства не скриптовых элементов этого объекта |
QDBusConnection::ExportNonScriptableInvokables |
0x800 |
экспортировать вызываемые элементы не скриптовых элементов этого объекта |
QDBusConnection::ExportNonScriptableContents |
0xf00 |
краткая форма для ExportNonScriptableSlots | ExportNonScriptableSignals | ExportNonScriptableProperties |
QDBusConnection::ExportAllSlots |
ExportScriptableSlots|ExportNonScriptableSlots |
экспортировать все слоты этого объекта |
QDBusConnection::ExportAllSignals |
ExportScriptableSignals|ExportNonScriptableSignals |
экспортировать все сигналы этого объекта |
QDBusConnection::ExportAllProperties |
ExportScriptableProperties|ExportNonScriptableProperties |
экспортировать все свойства этого объекта |
QDBusConnection::ExportAllInvokables |
ExportScriptableInvokables|ExportNonScriptableInvokables |
экспортировать все вызываемые элементы этого объекта |
QDBusConnection::ExportAllContents |
ExportScriptableContents|ExportNonScriptableContents |
экспортировать всё содержимое этого объекта |
QDBusConnection::ExportChildObjects |
0x1000 |
экспортировать дочерние объекты этого объекта |
Тип RegisterOptions является типом-псевдонимом для QFlags<RegisterOption>. Он хранит логическое ИЛИ комбинацию значений RegisterOption.
См. также registerObject(), QDBusAbstractAdaptor и Использование адаптеров.
enum QDBusConnection::UnregisterMode
Режим для отмены регистрации пути объекта:
| Константа | Значение | Описание |
|---|---|---|
QDBusConnection::UnregisterNode |
0 |
отменить регистрацию только данного узла: не отменять регистрацию дочерних объектов |
QDBusConnection::UnregisterTree |
1 |
отменить регистрацию данного узла и всего его поддерева |
Обратите внимание, что если этот объект был зарегистрирован с опцией ExportChildObjects, UnregisterNode также отменит регистрацию дочерних объектов.
Документация по функциям членов
QDBusConnection::QDBusConnection(const QDBusConnection &other)
Создаёт копию соединения other.
QDBusConnection::QDBusConnection(const QString &name)
Создаёт объект QDBusConnection, привязанный к соединению с именем name.
Это не открывает соединение. Для его открытия необходимо вызвать connectToBus().
QDBusConnection &QDBusConnection::operator=(const QDBusConnection &other)
Создаёт копию соединения other в этом объекте. Обратите внимание, что соединение, к которому этот объект ссылался до копирования, не разъединяется автоматически.
См. также disconnectFromBus().
QDBusConnection::~QDBusConnection()
Удаляет этот объект. Это не закрывает соединение: для его закрытия необходимо вызвать disconnectFromBus().
QDBusPendingCall QDBusConnection::asyncCall(const QDBusMessage &message, int timeout = -1) const
Отправляет сообщение message по этому соединению и возвращает результат сразу. Эта функция подходит только для вызовов методов. Она возвращает объект типа QDBusPendingCall, который может использоваться для отслеживания состояния ответа.
Если ответ не получен в течение timeout миллисекунд, будет автоматически передана ошибка, указывающая на истечение времени ожидания вызова. Значение по умолчанию для timeout — -1, которое будет заменено реализацией значения, подходящим для межпроцессного взаимодействия (обычно 25 секунд). Это время ожидания также является верхней границей ожидания в QDBusPendingCall::waitForFinished().
См. функцию QDBusInterface::asyncCall() для более удобного способа размещения вызовов.
Эта функция была введена в Qt 4.5.
QString QDBusConnection::baseService() const
Возвращает уникальное имя соединения для этого соединения, если этот объект QDBusConnection подключен, или пустую строку QString в противном случае.
Уникальное имя соединения — это строка в формате «:x.xxx» (где x — десятичные цифры), которая назначается демоном сервера D-Bus при подключении. Оно однозначно идентифицирует данного клиента в шине.
Для соединений «peer-to-peer» эта функция возвращает пустую QString.
QDBusMessage QDBusConnection::call(const QDBusMessage &message, QDBus::CallMode mode = QDBus::Block, int timeout = -1) const
Отправляет message по данному соединению и блокируется, ожидая ответа не более timeout миллисекунд. Данная функция подходит только для вызовов методов. Она возвращает сообщение ответа, которое будет либо QDBusMessage::ReplyMessage, либо QDBusMessage::ErrorMessage.
Если ответ не получен в течение timeout миллисекунд, автоматически выдается ошибка, указывающая на истечение времени ожидания вызова. По умолчанию timeout равен -1, что заменяется определенным реализацией значением, подходящим для межпроцессного взаимодействия (обычно 25 секунд).
См. функцию QDBusInterface::call() для более удобного способа вызова.
Предупреждение: Если mode равен QDBus::BlockWithGui, эта функция повторно вошла в цикл событий Qt для ожидания ответа. Во время ожидания она может передавать сигналы и другие вызовы методов вашей программе. Поэтому она должна быть готова обработать повторный вход, когда вызов выполняется с помощью call().
bool QDBusConnection::callWithCallback(const QDBusMessage &message, QObject *receiver, const char *returnMethod, const char *errorMethod, int timeout = -1) const
Отправляет message по этому соединению и сразу возвращается. Когда ответ получен, метод returnMethod вызывается в объекте receiver. Если произошла ошибка, вызывается метод errorMethod.
Если ответ не получен в течение timeout миллисекунд, автоматически выдается ошибка, указывающая на истечение времени ожидания вызова. По умолчанию timeout равен -1, что заменяется определенным реализацией значением, подходящим для межпроцессного взаимодействия (обычно 25 секунд).
Эта функция подходит только для вызовов методов. Гарантируется, что слот будет вызван ровно один раз с ответом, если типы параметров совпадают и ошибок нет.
Возвращает true, если сообщение было отправлено, или false, если сообщение не могло быть отправлено.
bool QDBusConnection::connect(const QString &service, const QString &path, const QString &interface, const QString &name, QObject *receiver, const char *slot)
Подключает сигнал, заданный параметрами service, path, interface и name, к слоту slot в объекте receiver. Аргументы service и path могут быть пустыми, обозначая подключение к любому сигналу пары (interface, name) из любого удаленного приложения.
Возвращает true, если подключение прошло успешно.
Предупреждение: Сигнал будет передан только в слот, если параметры совпадают. Эта проверка может быть выполнена только при получении сигнала, а не во время подключения.
bool QDBusConnection::connect(const QString &service, const QString &path, const QString &interface, const QString &name, const QString &signature, QObject *receiver, const char *slot)
Это перегруженная функция.
Подключает сигнал к слоту slot в объекте receiver. В отличие от предыдущей перегрузки connect(), эта функция позволяет указать сигнатуру параметров, подключаемых с помощью переменной signature. Функция затем проверяет, может ли эта сигнатура быть передана слоту, указанному параметром slot, и возвращает false в противном случае.
Возвращает true, если подключение прошло успешно.
Примечание: Эта функция проверяет соответствие сигнатуры сигнала параметрам слота, но не проверяет, существует ли фактический сигнал с данной сигнатурой в удаленной службе.
bool QDBusConnection::connect(const QString &service, const QString &path, const QString &interface, const QString &name, const QStringList &argumentMatch, const QString &signature, QObject *receiver, const char *slot)
Это перегруженная функция.
Подключает сигнал к слоту slot в объекте receiver. В отличие от предыдущей перегрузки connect(), эта функция позволяет указать сигнатуру параметров, подключаемых с помощью переменной signature. Функция затем проверяет, может ли эта сигнатура быть передана слоту, указанному параметром slot, и возвращает false в противном случае.
Параметр argumentMatch содержит список строковых параметров для сопоставления в последовательном порядке. Обратите внимание, что для соответствия пустой строке, вы должны передать QString, которая пуста, но не null (т.е., QString("")). Null QString пропускает сопоставление в этой позиции.
Возвращает true, если подключение прошло успешно.
Примечание: Эта функция проверяет соответствие сигнатуры сигнала параметрам слота, но не проверяет, существует ли фактический сигнал с данной сигнатурой в удаленной службе.
Эта функция была добавлена в Qt 4.6.
[static] QDBusConnection QDBusConnection::connectToBus(QDBusConnection::BusType type, const QString &name)
Открывает соединение типа type с одной из известных шин и ассоциирует с ним имя соединения name. Возвращает объект QDBusConnection, связанный с этим соединением.
[static] QDBusConnection QDBusConnection::connectToBus(const QString &address, const QString &name)
Открывает соединение с частной шиной по адресу address и ассоциирует с ним имя соединения name. Возвращает объект QDBusConnection, связанный с этим соединением.
[static] QDBusConnection QDBusConnection::connectToPeer(const QString &address, const QString &name)
Открывает соединение «peer-to-peer» по адресу address и ассоциирует с ним имя соединения name. Возвращает объект QDBusConnection, связанный с этим соединением.
Эта функция была добавлена в Qt 4.8.
QDBusConnection::ConnectionCapabilities QDBusConnection::connectionCapabilities() const
Возвращает возможности этого соединения, согласованные с сервером шины или peer. Если этот QDBusConnection не подключен, эта функция возвращает отсутствующие возможности.
Эта функция была добавлена в Qt 4.8.
bool QDBusConnection::disconnect(const QString &service, const QString &path, const QString &interface, const QString &name, QObject *receiver, const char *slot)
Отключает сигнал, заданный параметрами service, path, interface и name, от слота slot в объекте receiver. Аргументы должны быть такими же, как передаваемые в функцию connect().
Возвращает true, если отключение прошло успешно.
bool QDBusConnection::disconnect(const QString &service, const QString &path, const QString &interface, const QString &name, const QString &signature, QObject *receiver, const char *slot)
Это перегруженная функция.
Отключает сигнал, заданный параметрами service, path, interface, name и signature, от слота slot в объекте receiver. Аргументы должны быть такими же, как передаваемые в функцию connect().
Возвращает true, если отключение прошло успешно.
bool QDBusConnection::disconnect(const QString &service, const QString &path, const QString &interface, const QString &name, const QStringList &argumentMatch, const QString &signature, QObject *receiver, const char *slot)
Это перегруженный метод.
Отсоединяет сигнал, указанный параметрами service, path, interface, name, argumentMatch и signature, от слота slot в объекте receiver. Аргументы должны быть такими же, как и те, что переданы в функцию connect().
Возвращает true, если отсоединение прошло успешно.
Эта функция была введена в Qt 4.6.
[static] void QDBusConnection::disconnectFromBus(const QString &name)
Закрывает соединение с шиной с именем name.
Обратите внимание, что если все еще существуют объекты QDBusConnection, связанные с тем же соединением, соединение не будет закрыто, пока все ссылки не будут удалены. Однако дальнейшие ссылки не могут быть созданы с помощью конструктора QDBusConnection.
[static] void QDBusConnection::disconnectFromPeer(const QString &name)
Закрывает соединение с узлом с именем name.
Обратите внимание, что если все еще существуют объекты QDBusConnection, связанные с тем же соединением, соединение не будет закрыто, пока все ссылки не будут удалены. Однако дальнейшие ссылки не могут быть созданы с помощью конструктора QDBusConnection.
Эта функция была введена в Qt 4.8.
QDBusConnectionInterface *QDBusConnection::interface() const
Возвращает объект QDBusConnectionInterface, представляющий интерфейс сервера D-Bus в этом соединении.
bool QDBusConnection::isConnected() const
Возвращает true, если этот объект QDBusConnection подключен.
QDBusError QDBusConnection::lastError() const
Возвращает последнюю ошибку, произошедшую в этом соединении.
Эта функция предназначена для кода низкого уровня. Если вы используете QDBusInterface::call(), коды ошибок сообщаются её значением возврата.
См. также QDBusInterface и QDBusMessage.
[static] QByteArray QDBusConnection::localMachineId()
Возвращает локальный идентификатор компьютера, как он известен системе D-Bus. Каждый узел или хост, на котором работает D-Bus, имеет уникальный идентификатор, который можно использовать для различения его от других хостов, если они делят ресурсы, такие как файловая система.
Обратите внимание, что локальный идентификатор компьютера не гарантируется как постоянный при перезагрузке системы, поэтому этот идентификатор не должен храниться в постоянном хранилище (например, в файловой системе). Он гарантированно остается постоянным только в течение текущей сессии загрузки.
Эта функция была введена в Qt 4.8.
QString QDBusConnection::name() const
Возвращает имя соединения для этого соединения, заданное как параметр name в connectToBus().
Имя соединения может использоваться для уникальной идентификации фактических подключений к шинам. Копии, сделанные из одного соединения, всегда неявно делят базовое соединение и, следовательно, имеют то же имя соединения.
Обратно, два соединения с разными именами соединения всегда подключены к разным шинам или имеют разное уникальное имя (возвращаемое baseService()) на этой шине.
Эта функция была введена в Qt 4.5.
См. также connectToBus() и disconnectFromBus().
QObject *QDBusConnection::objectRegisteredAt(const QString &path) const
Возвращает объект, зарегистрированный с помощью registerObject() по пути объекта, заданному path.
bool QDBusConnection::registerObject(const QString &path, QObject *object, QDBusConnection::RegisterOptions options = ExportAdaptors)
Регистрирует объект object по пути path и возвращает true, если регистрация прошла успешно. Параметр options определяет, сколько свойств объекта object будет экспонировано через D-Bus.
Эта функция не заменяет существующие объекты: если объект уже зарегистрирован по пути path, функция вернёт false. Используйте unregisterObject(), чтобы сначала его отменить.
Вы не можете зарегистрировать объект как дочерний объект объекта, зарегистрированного с помощью QDBusConnection::ExportChildObjects.
bool QDBusConnection::registerObject(const QString &path, const QString &interface, QObject *object, QDBusConnection::RegisterOptions options = ExportAdaptors)
Это перегруженный метод.
Регистрирует объект object по пути path с именем интерфейса interface и возвращает true, если регистрация прошла успешно. Параметр options определяет, сколько свойств объекта object будет экспонировано через D-Bus.
Эта функция не заменяет существующие объекты: если объект уже зарегистрирован по пути path, функция вернёт false. Используйте unregisterObject(), чтобы сначала его отменить.
Вы не можете зарегистрировать объект как дочерний объект объекта, зарегистрированного с помощью QDBusConnection::ExportChildObjects.
Эта функция была введена в Qt 5.5.
bool QDBusConnection::registerService(const QString &serviceName)
Попытка зарегистрировать serviceName на сервере D-Bus и возвращает true, если регистрация прошла успешно. Регистрация завершится неудачей, если имя уже зарегистрировано другим приложением.
См. также unregisterService() и QDBusConnectionInterface::registerService().
bool QDBusConnection::send(const QDBusMessage &message) const
Отправляет message по этому соединению, не ожидая ответа. Это подходит для ошибок, сигналов и значений возврата, а также для вызовов, значения возврата которых не нужны.
Возвращает true, если сообщение было успешно помещено в очередь, в противном случае — false.
[static] QDBusConnection QDBusConnection::sessionBus()
Возвращает объект QDBusConnection, открытый с шиной сеанса. Ссылка на объект, возвращаемая этой функцией, действительна до завершения приложения, в этот момент соединение будет закрыто, а объект удален.
void QDBusConnection::swap(QDBusConnection &other)
Меняет местами этот экземпляр QDBusConnection с other.
[static] QDBusConnection QDBusConnection::systemBus()
Возвращает объект QDBusConnection, открытый с системной шиной. Ссылка на объект, возвращаемая этой функцией, действительна до запуска деструктора QCoreApplication, когда соединение будет закрыто, а объект удален.
void QDBusConnection::unregisterObject(const QString &path, QDBusConnection::UnregisterMode mode = UnregisterNode)
Отменяет регистрацию объекта, который был зарегистрирован с помощью registerObject() по пути объекта, заданному path, и, если mode равен QDBusConnection::UnregisterTree, также всех его дочерних объектов.
Обратите внимание, что вы не можете отменить регистрацию объектов, которые не были зарегистрированы с помощью registerObject().
bool QDBusConnection::unregisterService(const QString &serviceName)
Отменяет регистрацию сервиса serviceName, который ранее был зарегистрирован с помощью registerService(), и возвращает true, если это прошло успешно.
См. также registerService() и QDBusConnectionInterface::unregisterService().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qdbusconnection.html