Spec-Zone.ru › Qt 6.0

Класс QDBusConnection

Класс QDBusConnection представляет подключение к демону шины D-Bus. Подробнее...

Заголовок: #include <QDBusConnection>
CMake: find_package(Qt6 COMPONENTS Dbus REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Dbus)
qmake: QT += dbus
  • Список всех членов, включая унаследованные
  • Устаревшие члены

Типы публичного доступа

Перечисление ТипШина { СессионнаяШине, СистемнаяШине, ШинеАктивации }
Флаги ВозможностиПодключения
Перечисление ВозможностьПодключения { ПередачаДескрипторовФайловUnix }
Перечисление ОпцияРегистрации { ЭкспортироватьАдаптеры, ЭкспортироватьСкриптовыеСлоты, ЭкспортироватьСкриптовыеСигналы, ЭкспортироватьСкриптовыеСвойства, ЭкспортироватьСкриптовыеВызываемыеОбъекты, …, ЭкспортироватьПодчинённыеОбъекты }
Флаги ОпцииРегистрации
Перечисление РежимУдаленияРегистрации { УдалитьУзел, УдалитьДерево }
Флаги ОпцииРегистрацииВиртуальныхОбъектов

Общедоступные функции

QDBusConnection(const QDBusConnection &other)
QDBusConnection(const QString &name)
QDBusConnection & operator=(const QDBusConnection &other)
~QDBusConnection()
QDBusPendingCall asyncCall(const QDBusMessage &message, int timeout = -1) const
QString baseService() const
QDBusMessage call(const QDBusMessage &message, QDBus::CallMode mode = QDBus::Block, int timeout = -1) const
bool callWithCallback(const QDBusMessage &message, QObject *receiver, const char *returnMethod, const char *errorMethod, int timeout = -1) const
bool connect(const QString &service, const QString &path, const QString &interface, const QString &name, QObject *receiver, const char *slot)
bool connect(const QString &service, const QString &path, const QString &interface, const QString &name, const QString &signature, QObject *receiver, const char *slot)
bool connect(const QString &service, const QString &path, const QString &interface, const QString &name, const QStringList &argumentMatch, const QString &signature, QObject *receiver, const char *slot)
QDBusConnection::ConnectionCapabilities connectionCapabilities() const
bool disconnect(const QString &service, const QString &path, const QString &interface, const QString &name, QObject *receiver, const char *slot)
bool disconnect(const QString &service, const QString &path, const QString &interface, const QString &name, const QString &signature, QObject *receiver, const char *slot)
bool disconnect(const QString &service, const QString &path, const QString &interface, const QString &name, const QStringList &argumentMatch, const QString &signature, QObject *receiver, const char *slot)
QDBusConnectionInterface * interface() const
bool isConnected() const
QDBusError lastError() const
QString name() const
QObject * objectRegisteredAt(const QString &path) const
bool registerObject(const QString &path, QObject *object, QDBusConnection::RegisterOptions options = ExportAdaptors)
bool registerObject(const QString &path, const QString &interface, QObject *object, QDBusConnection::RegisterOptions options = ExportAdaptors)
bool registerService(const QString &serviceName)
bool send(const QDBusMessage &message) const
void swap(QDBusConnection &other)
void unregisterObject(const QString &path, QDBusConnection::UnregisterMode mode = UnregisterNode)
bool unregisterService(const QString &serviceName)

Статические общедоступные члены

QDBusConnection connectToBus(QDBusConnection::BusType type, const QString &name)
QDBusConnection connectToBus(const QString &address, const QString &name)
QDBusConnection connectToPeer(const QString &address, const QString &name)
void disconnectFromBus(const QString &name)
void disconnectFromPeer(const QString &name)
QByteArray localMachineId()
QDBusConnection sessionBus()
QDBusConnection systemBus()

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

Этот класс является начальной точкой в сессии D-Bus. С его помощью можно получить доступ к удаленным объектам, интерфейсам; подключить удаленные сигналы к слотам вашего объекта; зарегистрировать объекты и т. д.

Подключения D-Bus создаются с помощью функции connectToBus(), которая открывает подключение к демону сервера и выполняет начальный обмен данными, связывая это подключение с именем. Повторные попытки подключения с использованием того же имени вернут то же подключение.

Подключение затем разрывается с помощью функции disconnectFromBus().

После разрыва подключения вызов connectToBus() не восстановит подключение, необходимо создать новый экземпляр QDBusConnection.

В качестве удобства для двух наиболее распространённых типов подключений функции sessionBus() и systemBus() возвращают открытые подключения к демону сеансового сервера и демону системного сервера соответственно. Эти подключения открываются при первом использовании и закрываются при выполнении деструктора QCoreApplication.

D-Bus также поддерживает подключения «равноправный к равноправному», без необходимости в демоне сервера шины. Используя эту возможность, два приложения могут общаться друг с другом и обмениваться сообщениями. Этого можно добиться, передав адрес в функцию connectToBus(), которая была открыта другим приложением D-Bus с помощью QDBusServer.

Документация по типам членов

перечисление QDBusConnection::BusType

Определяет тип подключения к шине. Допустимые типы шин:

Константа Значение Описание
QDBusConnection::SessionBus 0 сеансовая шина, связанная с текущей сессией рабочего стола
QDBusConnection::SystemBus 1 системная шина, используемая для связи с системными процессами
QDBusConnection::ActivationBus 2 шине активации, «псевдоним» шины, запустившей службу

В сеансовой шине можно найти другие приложения от того же пользователя, которые используют ту же сессию рабочего стола (отсюда и название). В системной шине, однако, обычно находятся процессы, общие для всей системы.

перечисление QDBusConnection::ConnectionCapabilityфлаги QDBusConnection::ConnectionCapabilities

Это перечисление описывает доступные возможности для подключения D-Bus.

Константа Значение Описание
QDBusConnection::UnixFileDescriptorPassing 0x0001 разрешает передачу дескрипторов файлов Unix другим процессам (см. QDBusUnixFileDescriptor)

Тип ConnectionCapabilities является типом-синонимом для QFlags<ConnectionCapability>. Он хранит логическое ИЛИ комбинацию значений ConnectionCapability.

См. также connectionCapabilities().

перечисление QDBusConnection::RegisterOptionфлаги QDBusConnection::RegisterOptions

Определяет параметры для регистрации объектов в подключении. Возможные значения:

Остальной код перевода Остальной код перевода Остальной код перевода Остальной код перевода Остальной код перевода Остальной код перевода Остальной код перевода Остальной код перевода Остальной код перевода Остальной код перевода Остальной код перевода Остальной код перевода Остальной код перевода Остальной код перевода Остальной код перевода Остальной код перевода Остальной код перевода Остальной код перевода Остальной код перевода Остальной код перевода Остальной код перевода Остальной код перевода Остальной код перевода Остальной код перевода Остальной код перевода Остальной код перевода Остальной код перевода Остальной код перевода Остальной код перевода Остальной код перевода Остальной код перевода Остальной код перевода

Тип RegisterOptions является типом-синонимом для QFlags<RegisterOption>. Он хранит логическое ИЛИ комбинацию значений RegisterOption.

См. также registerObject(), QDBusAbstractAdaptor, и Использование адаптеров.

перечисление 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() для более удобного способа размещения вызовов.

QString QDBusConnection::baseService() const

Возвращает уникальное имя подключения для этого подключения, если этот объект QDBusConnection подключен, или пустую QString в противном случае.

Уникальное имя подключения — это строка в формате «:x.xxx» (где x — десятичные цифры), которая назначается демоном сервера D-Bus при подключении. Она уникально идентифицирует этого клиента в шине.

Эта функция возвращает пустую QString для подключений «равноправный к равноправному».

END_OF_DOCUMENT_MARKER

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 если подключение было успешным.

Примечание: Эта функция проверяет, соответствует ли подписывание сигнала параметрам слота, но не проверяет, существует ли фактический сигнал с заданным подписыванием в удалённой службе.

[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, связанный с этим соединением.

QDBusConnection::ConnectionCapabilities QDBusConnection::connectionCapabilities() const

Возвращает возможности этого соединения, согласованные с сервером шины или узлом. Если это QDBusConnection не подключено, эта функция не возвращает никаких возможностей.

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, если отключение прошло успешно.

[static] void QDBusConnection::disconnectFromBus(const QString &name)

Закрывает подключение к шине с именем name.

Обратите внимание, что если все ещё существуют объекты QDBusConnection, связанные с этим подключением, подключение не будет закрыто, пока все ссылки не будут удалены. Однако создание дополнительных ссылок с помощью конструктора QDBusConnection больше не будет возможно.

[static] void QDBusConnection::disconnectFromPeer(const QString &name)

Закрывает подключение к узлу с именем name.

Обратите внимание, что если все ещё существуют объекты QDBusConnection, связанные с этим подключением, подключение не будет закрыто, пока все ссылки не будут удалены. Однако создание дополнительных ссылок с помощью конструктора QDBusConnection больше не будет возможно.

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, имеет уникальный идентификатор, который может использоваться для различения его от других хостов, если они совместно используют ресурсы, такие как файловая система.

Обратите внимание, что идентификатор локальной машины не гарантируется как постоянный после перезагрузки системы, поэтому этот идентификатор не следует хранить в постоянном хранилище (например, в файловой системе). Гарантируется, что он останется неизменным только в течение текущей сессии загрузки.

QString QDBusConnection::name() const

Возвращает имя подключения для этого соединения, заданное в качестве параметра name функции connectToBus().

Имя подключения может использоваться для уникальной идентификации фактических подключаемых соединений к шинам. Копии, созданные из одного соединения, всегда неявно используют общее базовое подключение и, следовательно, будут иметь то же имя подключения.

Обратно, два подключения с разными именами подключения всегда будут подключены к разным шинам или иметь разное уникальное имя (как возвращает функция baseService()) на этой шине.

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

[since 5.5] bool QDBusConnection::registerObject(const QString &path, const QString &interface, QObject *object, QDBusConnection::RegisterOptions options = ExportAdaptors)

Это перегруженный функцией.

Регистрирует объект object по пути path с именем интерфейса interface и возвращает true, если регистрация прошла успешно. Параметр options определяет, какая часть объекта object будет экспортирована через D-Bus.

Эта функция не заменяет существующие объекты: если объект уже зарегистрирован по пути path, эта функция вернёт false. Используйте unregisterObject(), чтобы сначала его отменить.

Флаг ExportChildObjects экспортирует дочерние объекты в D-Bus на основе пути зарегистрированных объектов и имени объекта QObject::objectName дочернего объекта. Поэтому важно, чтобы дочерний объект имел имя объекта.

Нельзя регистрировать объект как дочерний объект объекта, зарегистрированного с флагом ExportChildObjects.

Функция была добавлена в Qt 5.5.

bool QDBusConnection::registerService(const QString &serviceName)

Попытка зарегистрировать serviceName на сервере D-Bus и возвращает true, если регистрация прошла успешно. Регистрация завершится неудачей, если имя уже зарегистрировано другим приложением.

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

bool QDBusConnection::send(const QDBusMessage &message) const

Отправляет message по этому подключению, не ожидая ответа. Это подходит для ошибок, сигналов и значений возврата, а также для вызовов, значения возврата которых не требуются.

Возвращает true, если сообщение было успешно помещено в очередь, в противном случае возвращается false.

[static] QDBusConnection QDBusConnection::sessionBus()

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

void QDBusConnection::swap(QDBusConnection &other)

Меняет местами экземпляр QDBusConnection с other.

[static] QDBusConnection QDBusConnection::systemBus()

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

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

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

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

bool QDBusConnection::unregisterService(const QString &serviceName)

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

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

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qdbusconnection.html

Spec-Zone.ru

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