Класс 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