Класс 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 значение, если дескрипторы файлов 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.14/qdbusunixfiledescriptor.html