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