Класс QDBusConnection
Класс QDBusConnection представляет собой подключение к демону шины D-Bus. Подробнее...
| Заголовок: | #include <QDBusConnection> |
| qmake: | QT += dbus |
| С момента: | Qt 4.2 |
Открытые типы
| перечисление | BusType { SessionBus, SystemBus, ActivationBus } |
| флаги | ConnectionCapabilities |
| перечисление | ConnectionCapability { UnixFileDescriptorPassing } |
| перечисление | RegisterOption { ExportAdaptors, ExportScriptableSlots, ExportScriptableSignals, ExportScriptableProperties, ..., ExportChildObjects } |
| флаги | RegisterOptions |
| перечисление | UnregisterMode { UnregisterNode, UnregisterTree } |
Public Functions
| QDBusConnection(const QString &name) | |
| QDBusConnection(const QDBusConnection &other) | |
| QDBusConnection(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) |
| bool | registerObject(const QString &path, const QString &interface, QObject *object, QDBusConnection::RegisterOptions options) |
| 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 & | operator=(QDBusConnection &&other) |
| QDBusConnection & | operator=(const QDBusConnection &other) |
Static Public Members
| 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() |
| const QMetaObject | staticMetaObject |
| QDBusConnection | systemBus() |
Подробное описание
Класс QDBusConnection представляет собой соединение с демоном шины D-Bus.
Этот класс является начальной точкой в сессии D-Bus. С его помощью вы можете получить доступ к удалённым объектам, интерфейсам; подключить удалённые сигналы к слотам вашего объекта; зарегистрировать объекты и т.д.
Соединения D-Bus создаются с помощью функции connectToBus(), которая открывает соединение с серверным демоном и выполняет начальное рукопожатие, связывая это соединение с именем. Повторные попытки подключения с использованием того же имени вернут то же соединение.
Соединение затем разрывается с помощью функции disconnectFromBus().
После разрыва подключения, вызов connectToBus() не восстановит соединение, вам необходимо создать новый экземпляр QDBusConnection.
Для удобства работы с двумя наиболее распространёнными типами соединений, функции sessionBus() и systemBus() возвращают открытые соединения с демоном сервера сессии и демоном сервера системы соответственно. Эти соединения открываются при первом использовании и закрываются при выполнении деструктора QCoreApplication.
D-Bus также поддерживает соединения "точка-точка" без необходимости в демоне сервера шины. Используя эту возможность, две программы могут общаться и обмениваться сообщениями. Этого можно добиться, передав адрес функции connectToBus(), который был открыт другой программой D-Bus с помощью QDBusServer.
Документация по типам членов
перечисление QDBusConnection::BusType
Указывает тип соединения с шиной. Допустимые типы шин:
| Константа | Значение | Описание |
|---|---|---|
QDBusConnection::SessionBus |
0 |
шина сессии, связанная с текущей сессией рабочего стола |
QDBusConnection::SystemBus |
1 |
шина системы, используемая для связи с системными процессами |
QDBusConnection::ActivationBus |
2 |
шина активации, "псевдоним" для шины, которая запустила службу |
В шине сессии можно найти другие приложения одного пользователя, которые используют ту же сессию рабочего стола (отсюда и название). В шине системы, однако, обычно находятся процессы, общие для всей системы.
перечисление QDBusConnection::ConnectionCapabilityфлаги QDBusConnection::ConnectionCapabilities
Это перечисление описывает доступные возможности для соединения D-Bus.
| Константа | Значение | Описание |
|---|---|---|
QDBusConnection::UnixFileDescriptorPassing |
0x0001 |
позволяет передавать дескрипторы файлов Unix в другие процессы (см. QDBusUnixFileDescriptor) |
Это перечисление было добавлено или изменено в Qt 4.8.
END_OF_DOCUMENT_MARKERТип ConnectionCapabilities — это typedef для 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 — это typedef для QFlags<RegisterOption>. Он хранит логическое ИЛИ сочетание значений RegisterOption.
См. также registerObject(), QDBusAbstractAdaptor и Использование адаптеров.
enum QDBusConnection::UnregisterMode
Режим для отмены регистрации пути объекта:
| Константа | Значение | Описание |
|---|---|---|
QDBusConnection::UnregisterNode |
0 |
отменить регистрацию только этого узла: не отменять регистрацию дочерних объектов |
QDBusConnection::UnregisterTree |
1 |
отменить регистрацию этого узла и всех его поддеревьев |
Обратите внимание, однако, что если этот объект был зарегистрирован с опцией ExportChildObjects, UnregisterNode также отменит регистрацию дочерних объектов.
Документация по членам-функциям
QDBusConnection::QDBusConnection(const QString &name)
Создает объект QDBusConnection, подключенный к соединению с именем name.
Это не открывает соединение. Для его открытия необходимо вызвать connectToBus().
QDBusConnection::QDBusConnection(const QDBusConnection &other)
Создает копию соединения other.
QDBusConnection::QDBusConnection(QDBusConnection &&other)
Конструктор перемещения-копирования.
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)
Регистрирует объект 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)
Это перегруженная функция.
Регистрирует объект 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().
QDBusConnection &QDBusConnection::operator=(QDBusConnection &&other)
Оператор перемещающего присваивания.
QDBusConnection &QDBusConnection::operator=(const QDBusConnection &other)
Создаёт копию соединения other в этом объекте. Обратите внимание, что соединение, на которое ссылался этот объект до копирования, не отключается автоматически.
См. также disconnectFromBus().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qdbusconnection.html