Spec-Zone.ru › Qt 5.14

Класс 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_MARKER

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.14/qdbusconnection.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API