Spec-Zone.ru › Qt 5.6

Класс 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)
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, RegisterOptions options = ExportAdaptors)
bool registerObject(const QString &path, const QString &interface, QObject *object, RegisterOptions options = ExportAdaptors)
bool registerService(const QString &serviceName)
bool send(const QDBusMessage &message) const
void swap(QDBusConnection &other)
void unregisterObject(const QString &path, UnregisterMode mode = UnregisterNode)
bool unregisterService(const QString &serviceName)
QDBusConnection & operator=(QDBusConnection &&other)
QDBusConnection & operator=(const QDBusConnection &other)

Статические открытые члены

QDBusConnection connectToBus(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()

Подробное описание

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

См. также 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(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.

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, 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, 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)

[static] QDBusConnection QDBusConnection::systemBus()

Возвращает объект QDBusConnection, открытый с системной шиной. Ссылка на возвращаемый объект действительна до момента выполнения деструктора QCoreApplication, когда соединение будет закрыто, а объект удалён.

void QDBusConnection::unregisterObject(const QString &path, UnregisterMode mode = UnregisterNode)

Отменяет регистрацию объекта, зарегистрированного с помощью функции registerObject() по пути объекта, заданному параметром path, и, если mode равен QDBusConnection::UnregisterTree, все его дочерние объекты тоже.

Обратите внимание, что вы не можете отменить регистрацию объектов, которые не были зарегистрированы с помощью registerObject().

bool QDBusConnection::unregisterService(const QString &serviceName)

Отменяет регистрацию службы serviceName, которая ранее была зарегистрирована с помощью registerService(), и возвращает true, если операция прошла успешно.

См. также registerService() и QDBusConnectionInterface::unregisterService().

END_OF_DOCUMENT_MARKER

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

Spec-Zone.ru

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