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