Spec-Zone.ru › Qt 5.9

Класс 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API