Spec-Zone.ru › Qt

Класс 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 true, если дескрипторы Unix-файлов поддерживаются на этой платформе. Другими словами, эта функция возвращает true true, если это Unix-платформа.

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

bool QDBusUnixFileDescriptor::isValid() const

Возвращает true 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.2/qdbusunixfiledescriptor.html

Spec-Zone.ru

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