Класс QDBusConnection
Класс QDBusConnection представляет собой соединение с демоном шины D-Bus. Подробнее...
| Заголовок: | #include <QDBusConnection> |
| qmake: | QT += dbus |
| С момента: | Qt 4.2 |
Публичные типы
| перечисление | Тип шины { SessionBus, SystemBus, ActivationBus } |
| флаги | Возможности соединения |
| перечисление | Возможность соединения { UnixFileDescriptorPassing } |
| перечисление | Опция регистрации { ExportAdaptors, ExportScriptableSlots, ExportScriptableSignals, ExportScriptableProperties, ..., ExportChildObjects } |
| флаги | Опции регистрации |
| перечисление | Режим отмены регистрации { UnregisterNode, UnregisterTree } |
Общедоступные функции
| 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 | последняяОшибка() const |
| QString | имя() const |
| QObject * | объектЗарегистрированПоАдресу(const QString &path) const |
| bool | зарегистрироватьОбъект(const QString &path, QObject *object, QDBusConnection::RegisterOptions options = ExportAdaptors) |
| bool | зарегистрироватьОбъект(const QString &path, const QString &interface, QObject *object, QDBusConnection::RegisterOptions options = ExportAdaptors) |
| bool | зарегистрироватьУслугу(const QString &serviceName) |
| bool | отправить(const QDBusMessage &message) const |
| void | поменять(QDBusConnection &other) |
| void | отменитьРегистрациюОбъекта(const QString &path, QDBusConnection::UnregisterMode mode = UnregisterNode) |
| bool | отменитьРегистрациюУслуги(const QString &serviceName) |
| QDBusConnection & | operator=(QDBusConnection &&other) |
| QDBusConnection & | operator=(const QDBusConnection &other) |
Статические общедоступные члены
| QDBusConnection | подключитьсяКАвтобусу(QDBusConnection::BusType type, const QString &name) |
| QDBusConnection | подключитьсяКАвтобусу(const QString &address, const QString &name) |
| QDBusConnection | подключитьсяКПартнеру(const QString &address, const QString &name) |
| void | отключитьсяОтАвтобуса(const QString &name) |
| void | отключитьсяОтПартнера(const QString &name) |
| QByteArray | идентификаторЛокальнойМашины() |
| QDBusConnection | автобусСессии() |
| QDBusConnection | системныйАвтобус() |
Подробное описание
Класс QDBusConnection представляет собой подключение к демону шины D-Bus.
Этот класс является начальной точкой в сеансе 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.
END_OF_DOCUMENT_MARKERСм. также registerObject(), QDBusAbstractAdaptor и Использование адаптеров.
перечисление 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 = 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().
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/archives/qt-5.11/qdbusconnection.html