Класс 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 | 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 при подключении. Она однозначно идентифицирует этого клиента в шине.
Данная функция возвращает пустой QString для соединений «peer-to-peer».
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, который пустой, но не нулевой (т.е., QString("")). Нулевой 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(), чтобы его сначала отменить.
Флаг 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().
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.15/qdbusconnection.html