Spec-Zone.ru › Qt 5.15

Класс QDBusUnixFileDescriptor

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

Заголовок: #include <QDBusUnixFileDescriptor>
qmake: QT += dbus
С момента: Qt 4.8

Этот класс был представлен в Qt 4.8.

  • Список всех членов, включая унаследованные

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

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 и демоне шины 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().

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().

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-5.15/qdbusunixfiledescriptor.html

Spec-Zone.ru

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