Класс QDBusConnection
Класс QDBusConnection представляет собой соединение с демоном шины D-Bus. Подробнее...
| Заголовок: | #include <QDBusConnection> |
| qmake: | QT += dbus |
| С версии: | Qt 4.2 |
Этот класс был представлен в Qt 4.2.
Публичные типы
| перечисление | ТипШина { СессионнаяШины, СистемнаяШины, ШиныАктивации } |
| флаги | ВозможностиСоединения |
| перечисление | ВозможностьСоединения { ПередачаДескрипторовUnix } |
| перечисление | ОпцииРегистрации { ЭкспортАдаптеров, ЭкспортСкриптовыхСлот, ЭкспортСкриптовыхСигналов, ЭкспортСкриптовыхСвойств, ЭкспортСкриптовыхВызываемых, …, ЭкспортДочернихОбъектов } |
| флаги | ОпцииРегистрации |
| перечисление | РежимУдаленияРегистрации { УдалитьУзел, УдалитьДерево } |
| флаги | ОпцииРегистрацииВиртуальныхОбъектов |
Общедоступные функции
| 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 | последняяОшибка() const |
| QString | имя() 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 при подключении. Оно однозначно идентифицирует этого клиента в шине.
Эта функция возвращает пустой 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)
Открывает соединение «точка-точка» по адресу address и связывает с ним имя соединения name. Возвращает объект QDBusConnection, связанный с этим соединением.
Эта функция была добавлена в Qt 4.8.
QDBusConnection::ConnectionCapabilities QDBusConnection::connectionCapabilities() const
Возвращает возможности этого соединения, согласованные с сервером шины или узлом. Если это 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(), чтобы отменить регистрацию объекта.
Флаг ExportChildObjects экспортирует дочерние объекты в D-Bus на основе пути к зарегистрированным объектам и имени объекта QObject::objectName дочерних объектов. Поэтому важно, чтобы дочерний объект имел имя.
Вы не можете зарегистрировать объект как дочерний объект объекта, зарегистрированного с флагом 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(), чтобы отменить регистрацию объекта.
Флаг ExportChildObjects экспортирует дочерние объекты в D-Bus на основе пути к зарегистрированным объектам и имени объекта QObject::objectName дочерних объектов. Поэтому важно, чтобы дочерний объект имел имя.
Вы не можете зарегистрировать объект как дочерний объект объекта, зарегистрированного с флагом 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().
END_OF_DOCUMENT_MARKERbool 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.14/qdbusconnection.html