Spec-Zone.ru › Qt 6.0

Класс 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.0/qdbusunixfiledescriptor.html

Spec-Zone.ru

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