Copyright | Will Thompson Iñaki García Etxebarria and Jonas Platte |
---|---|
License | LGPL-2.1 |
Maintainer | Iñaki García Etxebarria (garetxe@gmail.com) |
Safe Haskell | None |
Language | Haskell2010 |
This SocketControlMessage
contains a UnixFDList
.
It may be sent using socketSendMessage
and received using
socketReceiveMessage
over UNIX sockets (ie: sockets in the
G_SOCKET_ADDRESS_UNIX
family). The file descriptors are copied
between processes by the kernel.
For an easier way to send and receive file descriptors over
stream-oriented UNIX sockets, see unixConnectionSendFd
and
unixConnectionReceiveFd
.
Note that <gio/gunixfdmessage.h>
belongs to the UNIX-specific GIO
interfaces, thus you have to use the gio-unix-2.0.pc
pkg-config
file when using it.
- newtype UnixFDMessage = UnixFDMessage (ManagedPtr UnixFDMessage)
- class GObject o => IsUnixFDMessage o
- toUnixFDMessage :: (MonadIO m, IsUnixFDMessage o) => o -> m UnixFDMessage
- noUnixFDMessage :: Maybe UnixFDMessage
- unixFDMessageAppendFd :: (HasCallStack, MonadIO m, IsUnixFDMessage a) => a -> Int32 -> m ()
- unixFDMessageGetFdList :: (HasCallStack, MonadIO m, IsUnixFDMessage a) => a -> m UnixFDList
- unixFDMessageNew :: (HasCallStack, MonadIO m) => m UnixFDMessage
- unixFDMessageNewWithFdList :: (HasCallStack, MonadIO m, IsUnixFDList a) => a -> m UnixFDMessage
- unixFDMessageStealFds :: (HasCallStack, MonadIO m, IsUnixFDMessage a) => a -> m [Int32]
- constructUnixFDMessageFdList :: (IsUnixFDMessage o, IsUnixFDList a) => a -> IO (GValueConstruct o)
- getUnixFDMessageFdList :: (MonadIO m, IsUnixFDMessage o) => o -> m UnixFDList
Exported types
newtype UnixFDMessage Source #
class GObject o => IsUnixFDMessage o Source #
toUnixFDMessage :: (MonadIO m, IsUnixFDMessage o) => o -> m UnixFDMessage Source #
Methods
appendFd
unixFDMessageAppendFd Source #
:: (HasCallStack, MonadIO m, IsUnixFDMessage a) | |
=> a |
|
-> Int32 |
|
-> m () | (Can throw |
Adds a file descriptor to message
.
The file descriptor is duplicated using dup()
. You keep your copy
of the descriptor and the copy contained in message
will be closed
when message
is finalized.
A possible cause of failure is exceeding the per-process or system-wide file descriptor limit.
Since: 2.22
getFdList
unixFDMessageGetFdList Source #
:: (HasCallStack, MonadIO m, IsUnixFDMessage a) | |
=> a |
|
-> m UnixFDList | Returns: the |
Gets the UnixFDList
contained in message
. This function does not
return a reference to the caller, but the returned list is valid for
the lifetime of message
.
Since: 2.24
new
:: (HasCallStack, MonadIO m) | |
=> m UnixFDMessage | Returns: a new |
Creates a new UnixFDMessage
containing an empty file descriptor
list.
Since: 2.22
newWithFdList
unixFDMessageNewWithFdList Source #
:: (HasCallStack, MonadIO m, IsUnixFDList a) | |
=> a |
|
-> m UnixFDMessage | Returns: a new |
Creates a new UnixFDMessage
containing list
.
Since: 2.24
stealFds
unixFDMessageStealFds Source #
:: (HasCallStack, MonadIO m, IsUnixFDMessage a) | |
=> a |
|
-> m [Int32] | Returns: an array of file descriptors |
Returns the array of file descriptors that is contained in this object.
After this call, the descriptors are no longer contained in
message
. Further calls will return an empty list (unless more
descriptors have been added).
The return result of this function must be freed with free
.
The caller is also responsible for closing all of the file
descriptors.
If length
is non-Nothing
then it is set to the number of file
descriptors in the returned array. The returned array is also
terminated with -1.
This function never returns Nothing
. In case there are no file
descriptors contained in message
, an empty array is returned.
Since: 2.22
Properties
fdList
constructUnixFDMessageFdList :: (IsUnixFDMessage o, IsUnixFDList a) => a -> IO (GValueConstruct o) Source #
getUnixFDMessageFdList :: (MonadIO m, IsUnixFDMessage o) => o -> m UnixFDList Source #