Spec-Zone.ru › Qt 5.13

Класс 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 и демоне шины версии 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().

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

Spec-Zone.ru

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