Класс QDBusUnixFileDescriptor
Класс QDBusUnixFileDescriptor хранит один дескриптор Unix-файла. Подробнее...
| Заголовок: | #include <QDBusUnixFileDescriptor> |
| qmake: | QT += dbus |
| С момента: | Qt 4.8 |
Открытые функции
| QDBusUnixFileDescriptor() | |
| QDBusUnixFileDescriptor(int fileDescriptor) | |
| QDBusUnixFileDescriptor(const QDBusUnixFileDescriptor &other) | |
| ~QDBusUnixFileDescriptor() | |
| int | fileDescriptor() const |
| bool | isValid() const |
| void | setFileDescriptor(int fileDescriptor) |
| void | swap(QDBusUnixFileDescriptor &other) |
| QDBusUnixFileDescriptor & | operator=(QDBusUnixFileDescriptor &&other) |
| QDBusUnixFileDescriptor & | operator=(const QDBusUnixFileDescriptor &other) |
Статические открытые члены
| bool | isSupported() |
Подробное описание
Класс QDBusUnixFileDescriptor хранит один дескриптор Unix-файла.
Класс 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()
Создаёт QDBusUnixFileDescriptor без обернутого дескриптора файла. Это эквивалентно созданию объекта с недопустимым дескриптором файла (например, -1).
См. также fileDescriptor() и isValid().
QDBusUnixFileDescriptor::QDBusUnixFileDescriptor(int fileDescriptor)
Создаёт объект QDBusUnixFileDescriptor путём копирования параметра fileDescriptor. Исходный дескриптор файла не затрагивается и должен быть закрыт пользователем.
Обратите внимание, что значение, возвращаемое fileDescriptor(), будет отличаться от параметра fileDescriptor, переданного.
Если параметр fileDescriptor не действителен, isValid() вернёт false, а fileDescriptor() вернёт -1.
См. также setFileDescriptor() и fileDescriptor().
QDBusUnixFileDescriptor::QDBusUnixFileDescriptor(const QDBusUnixFileDescriptor &other)
Создаёт объект QDBusUnixFileDescriptor путём копирования other.
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 значение true, если дескрипторы Unix-файлов поддерживаются в этой платформе. Другими словами, эта функция возвращает true значение 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.
QDBusUnixFileDescriptor &QDBusUnixFileDescriptor::operator=(QDBusUnixFileDescriptor &&other)
Перемещает присвоение other этому QDBusUnixFileDescriptor.
QDBusUnixFileDescriptor &QDBusUnixFileDescriptor::operator=(const QDBusUnixFileDescriptor &other)
Копирует дескриптор Unix-файла из объекта other QDBusUnixFileDescriptor. Если текущий объект содержал дескриптор файла, он будет должным образом удалён перед этим.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qdbusunixfiledescriptor.html