- class QDBusUnixFileDescriptor#
The
QDBusUnixFileDescriptor
class holds one Unix file descriptor. More…Synopsis#
Methods#
def
__init__()
def
fileDescriptor()
def
isValid()
def
swap()
Static functions#
def
isSupported()
Note
This documentation may contain snippets that were automatically translated from C++ to Python. We always welcome contributions to the snippet translation. If you see an issue with the translation, you can also let us know by creating a ticket on https:/bugreports.qt.io/projects/PYSIDE
Detailed Description#
The
QDBusUnixFileDescriptor
class is used to hold one Unix file descriptor for use with the Qt D-Bus module. This allows applications to send and receive Unix file descriptors over the D-Bus connection, mapping automatically to the D-Bus type ‘h’.Objects of type QDBusUnixFileDescriptors can be used also as parameters in signals and slots that get exported to D-Bus by registering with
registerObject
.QDBusUnixFileDescriptor
does not take ownership of the file descriptor. Instead, it will use the Unix system calldup(2)
to make a copy of the file descriptor. This file descriptor belongs to theQDBusUnixFileDescriptor
object and should not be stored or closed by the user. Instead, you should make your own copy if you need that.Availability#
Unix file descriptor passing is not available in all D-Bus connections. This feature is present with D-Bus library and bus daemon version 1.4 and upwards on Unix systems. Qt D-Bus automatically enables the feature if such a version was found at compile-time and run-time.
To verify that your connection does support passing file descriptors, check if the
UnixFileDescriptorPassing
capability is set withconnectionCapabilities()
. If the flag is not active, then you will not be able to make calls to methods that haveQDBusUnixFileDescriptor
as arguments or even embed such a type in a variant. You will also not receive calls containing that type.Note also that remote applications may not have support for Unix file descriptor passing. If you make a D-Bus to a remote application that cannot receive such a type, you will receive an error reply. If you try to send a signal containing a D-Bus file descriptor or return one from a method call, the message will be silently dropped.
Even if the feature is not available,
QDBusUnixFileDescriptor
will continue to operate, so code need not have compile-time checks for the availability of this feature.On non-Unix systems,
QDBusUnixFileDescriptor
will always report an invalid state andisSupported()
will return false.See also
ConnectionCapabilities
connectionCapabilities()
- __init__()#
Constructs a
QDBusUnixFileDescriptor
without a wrapped file descriptor. This is equivalent to constructing the object with an invalid file descriptor (like -1).See also
- __init__(other)
- Parameters:
other –
QDBusUnixFileDescriptor
Constructs a
QDBusUnixFileDescriptor
object by copyingother
.- __init__(fileDescriptor)
- Parameters:
fileDescriptor – int
Constructs a
QDBusUnixFileDescriptor
object by copying thefileDescriptor
parameter. The original file descriptor is not touched and must be closed by the user.Note that the value returned by
fileDescriptor()
will be different from thefileDescriptor
parameter passed.If the
fileDescriptor
parameter is not valid,isValid()
will return false andfileDescriptor()
will return -1.See also
- fileDescriptor()#
- Return type:
int
Returns the Unix file descriptor contained by this
QDBusUnixFileDescriptor
object. An invalid file descriptor is represented by the value -1.Note that the file descriptor returned by this function is owned by the
QDBusUnixFileDescriptor
object and must not be stored past the lifetime of this object. It is ok to use it while this object is valid, but if one wants to store it for longer use, the file descriptor should be cloned using the Unixdup(2)
,dup2(2)
ordup3(2)
functions.See also
- giveFileDescriptor(fileDescriptor)#
- Parameters:
fileDescriptor – int
- static isSupported()#
- Return type:
bool
Returns
true
if Unix file descriptors are supported on this platform. In other words, this function returnstrue
if this is a Unix platform.Note that
QDBusUnixFileDescriptor
continues to operate even if this function returnsfalse
. The only difference is that theQDBusUnixFileDescriptor
objects will always be in theisValid()
== false state andfileDescriptor()
will always return -1. The class will not consume any operating system resources.- isValid()#
- Return type:
bool
Returns
true
if this Unix file descriptor is valid. A valid Unix file descriptor is not -1.See also
- setFileDescriptor(fileDescriptor)#
- Parameters:
fileDescriptor – int
Sets the file descriptor that this
QDBusUnixFileDescriptor
object holds to a copy offileDescriptor
. The original file descriptor is not touched and must be closed by the user.Note that the value returned by
fileDescriptor()
will be different from thefileDescriptor
parameter passed.If the
fileDescriptor
parameter is not valid,isValid()
will return false andfileDescriptor()
will return -1.See also
- swap(other)#
- Parameters:
other –
QDBusUnixFileDescriptor
Swaps this file descriptor instance with
other
. This function is very fast and never fails.- takeFileDescriptor()#
- Return type:
int