Spec-Zone.ru › Qt 6.1

Класс QDBusUnixFileDescriptor

Класс QDBusUnixFileDescriptor содержит один дескриптор Unix-файла. Подробнее...

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

Открытые функции

QDBusUnixFileDescriptor(const QDBusUnixFileDescriptor &other)
QDBusUnixFileDescriptor(int fileDescriptor)
QDBusUnixFileDescriptor()
QDBusUnixFileDescriptor & operator=(const QDBusUnixFileDescriptor &other)
QDBusUnixFileDescriptor & operator=(QDBusUnixFileDescriptor &&other)
~QDBusUnixFileDescriptor()
int fileDescriptor() const
bool isValid() const
void setFileDescriptor(int fileDescriptor)
void swap(QDBusUnixFileDescriptor &other)

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

bool isSupported()

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

Класс QDBusUnixFileDescriptor используется для хранения одного дескриптора Unix-файла для использования с модулем Qt D-Bus. Это позволяет приложениям отправлять и получать дескрипторы Unix-файлов через соединение D-Bus, автоматически отображающиеся в тип D-Bus 'h'.

Объекты типа QDBusUnixFileDescriptors могут также использоваться в качестве параметров в сигналах и слотах, которые экспортируются в D-Bus путем регистрации с помощью QDBusConnection::registerObject.

QDBusUnixFileDescriptor не берет на себя ответственность за дескриптор файла. Вместо этого он будет использовать системный вызов Unix dup(2) для создания копии дескриптора файла. Этот дескриптор файла принадлежит объекту QDBusUnixFileDescriptor и не должен храниться или закрываться пользователем. Вместо этого вы должны сделать свою собственную копию, если вам это нужно.

Доступность

Передача дескрипторов Unix-файлов недоступна во всех подключениях D-Bus. Эта функция присутствует в библиотеке D-Bus и демоне шины версии 1.4 и выше на Unix-системах. Qt D-Bus автоматически включает эту функцию, если такая версия была найдена во время компиляции и выполнения.

Чтобы проверить, поддерживает ли ваше подключение передачу дескрипторов файлов, проверьте, установлен ли флаг QDBusConnection::UnixFileDescriptorPassing с помощью QDBusConnection::connectionCapabilities(). Если флаг не активен, то вы не сможете делать вызовы к методам, имеющим QDBusUnixFileDescriptor в качестве аргументов, или даже встраивать такой тип в переменную. Вы также не получите вызовы, содержащие этот тип.

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

Даже если функция недоступна, QDBusUnixFileDescriptor продолжит работать, поэтому код не нуждается в проверке на доступность этой функции во время компиляции.

В не-Unix системах QDBusUnixFileDescriptor всегда будет сообщать о недействительном состоянии, и QDBusUnixFileDescriptor::isSupported() вернёт false.

См. также QDBusConnection::ConnectionCapabilities и QDBusConnection::connectionCapabilities.

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

QDBusUnixFileDescriptor::QDBusUnixFileDescriptor(const QDBusUnixFileDescriptor &other)

Создаёт объект QDBusUnixFileDescriptor, копируя other.

QDBusUnixFileDescriptor::QDBusUnixFileDescriptor(int fileDescriptor)

Создаёт объект QDBusUnixFileDescriptor, копируя параметр fileDescriptor. Исходный дескриптор файла не изменяется и должен быть закрыт пользователем.

Обратите внимание, что значение, возвращаемое fileDescriptor(), будет отличаться от переданного параметра fileDescriptor.

Если параметр fileDescriptor недействителен, isValid() вернёт false, а fileDescriptor() вернёт -1.

См. также setFileDescriptor() и fileDescriptor().

QDBusUnixFileDescriptor::QDBusUnixFileDescriptor()

Создаёт QDBusUnixFileDescriptor без обернутого дескриптора файла. Это эквивалентно созданию объекта с недействительным дескриптором файла (например, -1).

См. также fileDescriptor() и isValid().

QDBusUnixFileDescriptor &QDBusUnixFileDescriptor::operator=(const QDBusUnixFileDescriptor &other)

Копирует дескриптор Unix-файла из объекта other QDBusUnixFileDescriptor. Если текущий объект содержал дескриптор файла, он будет должным образом удалён.

QDBusUnixFileDescriptor &QDBusUnixFileDescriptor::operator=(QDBusUnixFileDescriptor &&other)

Перемещает присвоение other этому объекту QDBusUnixFileDescriptor.

QDBusUnixFileDescriptor::~QDBusUnixFileDescriptor()

Удаляет этот объект QDBusUnixFileDescriptor и удаляет дескриптор Unix-файла, который он содержал.

int QDBusUnixFileDescriptor::fileDescriptor() const

Возвращает дескриптор Unix-файла, содержащийся в этом объекте QDBusUnixFileDescriptor. Недействительный дескриптор файла представлен значением -1.

Обратите внимание, что дескриптор файла, возвращаемый этой функцией, принадлежит объекту QDBusUnixFileDescriptor и не должен храниться после окончания срока действия этого объекта. Это нормально использовать его, пока этот объект действителен, но если нужно сохранить его для более длительного использования, то дескриптор файла должен быть клонирован с помощью функций Unix dup(2), dup2(2) или dup3(2).

См. также setFileDescriptor() и isValid().

[static] bool QDBusUnixFileDescriptor::isSupported()

Возвращает true , если дескрипторы Unix-файлов поддерживаются на данной платформе. Другими словами, эта функция возвращает true , если это Unix-платформа.

Обратите внимание, что QDBusUnixFileDescriptor продолжает работать, даже если эта функция возвращает false. Единственное отличие заключается в том, что объекты QDBusUnixFileDescriptor всегда будут в состоянии isValid() == false, а fileDescriptor() всегда будет возвращать -1. Класс не будет потреблять системные ресурсы.

bool QDBusUnixFileDescriptor::isValid() const

Возвращает true , если этот дескриптор Unix-файла действителен. Действительный дескриптор Unix-файла не равен -1.

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

void QDBusUnixFileDescriptor::setFileDescriptor(int fileDescriptor)

Устанавливает дескриптор файла, который держит этот объект QDBusUnixFileDescriptor, на копию fileDescriptor. Исходный дескриптор файла не изменяется и должен быть закрыт пользователем.

Обратите внимание, что значение, возвращаемое fileDescriptor(), будет отличаться от переданного параметра fileDescriptor.

Если параметр fileDescriptor некорректен, isValid() вернёт false, а fileDescriptor() вернёт -1.

См. также isValid() и fileDescriptor().

[since 5.0] void QDBusUnixFileDescriptor::swap(QDBusUnixFileDescriptor &other)

Меняет местами этот экземпляр описания файла с other. Эта функция очень быстрая и никогда не терпит неудач.

Эта функция была добавлена в Qt 5.0.

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

Spec-Zone.ru

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