gi-gio-2.0.19: Gio bindings

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

GI.Gio.Objects.UnixFDMessage

Contents

- Exported types
- Methods
  - appendFd
  - getFdList
  - new
  - newWithFdList
  - stealFds
- Properties
  - fdList

Description

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.

Synopsis

- 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 #

Memory-managed wrapper type.

Constructors

UnixFDMessage (ManagedPtr UnixFDMessage) |

Instances

GObject UnixFDMessage Source # |
Instance details Defined in GI.Gio.Objects.UnixFDMessage Methods gobjectType :: UnixFDMessage -> IO GType Source #
IsObject UnixFDMessage Source # |
Instance details Defined in GI.Gio.Objects.UnixFDMessage
IsSocketControlMessage UnixFDMessage Source # |
Instance details Defined in GI.Gio.Objects.UnixFDMessage
IsUnixFDMessage UnixFDMessage Source # |
Instance details Defined in GI.Gio.Objects.UnixFDMessage

class GObject o => IsUnixFDMessage o Source #

Type class for types which can be safely cast to `UnixFDMessage`, for instance with `toUnixFDMessage`.

Instances

(GObject a, (UnknownAncestorError UnixFDMessage a :: Constraint)) => IsUnixFDMessage a Source # |
Instance details Defined in GI.Gio.Objects.UnixFDMessage
IsUnixFDMessage UnixFDMessage Source # |
Instance details Defined in GI.Gio.Objects.UnixFDMessage

toUnixFDMessage :: (MonadIO m, IsUnixFDMessage o) => o -> m UnixFDMessage Source #

Cast to `UnixFDMessage`, for types for which this is known to be safe. For general casts, use `castTo`.

noUnixFDMessage :: Maybe UnixFDMessage Source #

A convenience alias for `Nothing` :: `Maybe` `UnixFDMessage`.

# Methods

## appendFd

unixFDMessageAppendFd Source #

Arguments

:: (HasCallStack, MonadIO m, IsUnixFDMessage a) |
=> a | `message`: a `UnixFDMessage`
-> Int32 | `fd`: a valid open file descriptor
-> m () | (Can throw `GError`)

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 #

Arguments

:: (HasCallStack, MonadIO m, IsUnixFDMessage a) |
=> a | `message`: a `UnixFDMessage`
-> m UnixFDList | Returns: the `UnixFDList` from `message`

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

unixFDMessageNew Source #

Arguments

:: (HasCallStack, MonadIO m) |
=> m UnixFDMessage | Returns: a new `UnixFDMessage`

Creates a new `UnixFDMessage` containing an empty file descriptor list.

Since: 2.22

## newWithFdList

unixFDMessageNewWithFdList Source #

Arguments

:: (HasCallStack, MonadIO m, IsUnixFDList a) |
=> a | `fdList`: a `UnixFDList`
-> m UnixFDMessage | Returns: a new `UnixFDMessage`

Creates a new `UnixFDMessage` containing `list`.

Since: 2.24

## stealFds

unixFDMessageStealFds Source #

Arguments

:: (HasCallStack, MonadIO m, IsUnixFDMessage a) |
=> a | `message`: a `UnixFDMessage`
-> 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

No description available in the introspection data.

constructUnixFDMessageFdList :: (IsUnixFDMessage o, IsUnixFDList a) => a -> IO (GValueConstruct o) Source #

Construct a `GValueConstruct` with valid value for the “`fd-list`” property. This is rarely needed directly, but it is used by `new`.

getUnixFDMessageFdList :: (MonadIO m, IsUnixFDMessage o) => o -> m UnixFDList Source #

Get the value of the “`fd-list`” property. When overloading is enabled, this is equivalent to

    get unixFDMessage #fdList