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