Copyright | Will Thompson Iñaki García Etxebarria and Jonas Platte |
---|---|
License | LGPL-2.1 |
Maintainer | Iñaki García Etxebarria |
Safe Haskell | None |
Language | Haskell2010 |
Support for UNIX-domain (also known as local) sockets.
UNIX domain sockets are generally visible in the filesystem.
However, some systems support abstract socket names which are not
visible in the filesystem and not affected by the filesystem
permissions, visibility, etc. Currently this is only supported
under Linux. If you attempt to use abstract sockets on other
systems, function calls may return IOErrorEnumNotSupported
errors. You can use unixSocketAddressAbstractNamesSupported
to see if abstract names are supported.
Note that <gio/gunixsocketaddress.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 UnixSocketAddress = UnixSocketAddress (ManagedPtr UnixSocketAddress)
- class (GObject o, IsDescendantOf UnixSocketAddress o) => IsUnixSocketAddress o
- toUnixSocketAddress :: (MonadIO m, IsUnixSocketAddress o) => o -> m UnixSocketAddress
- unixSocketAddressAbstractNamesSupported :: (HasCallStack, MonadIO m) => m Bool
- unixSocketAddressGetAddressType :: (HasCallStack, MonadIO m, IsUnixSocketAddress a) => a -> m UnixSocketAddressType
- unixSocketAddressGetIsAbstract :: (HasCallStack, MonadIO m, IsUnixSocketAddress a) => a -> m Bool
- unixSocketAddressGetPath :: (HasCallStack, MonadIO m, IsUnixSocketAddress a) => a -> m Text
- unixSocketAddressGetPathLen :: (HasCallStack, MonadIO m, IsUnixSocketAddress a) => a -> m Word64
- unixSocketAddressNew :: (HasCallStack, MonadIO m) => Text -> m UnixSocketAddress
- unixSocketAddressNewAbstract :: (HasCallStack, MonadIO m) => [Int8] -> m UnixSocketAddress
- unixSocketAddressNewWithType :: (HasCallStack, MonadIO m) => [Int8] -> UnixSocketAddressType -> m UnixSocketAddress
- constructUnixSocketAddressAbstract :: (IsUnixSocketAddress o, MonadIO m) => Bool -> m (GValueConstruct o)
- getUnixSocketAddressAbstract :: (MonadIO m, IsUnixSocketAddress o) => o -> m Bool
- constructUnixSocketAddressAddressType :: (IsUnixSocketAddress o, MonadIO m) => UnixSocketAddressType -> m (GValueConstruct o)
- getUnixSocketAddressAddressType :: (MonadIO m, IsUnixSocketAddress o) => o -> m UnixSocketAddressType
- constructUnixSocketAddressPath :: (IsUnixSocketAddress o, MonadIO m) => Text -> m (GValueConstruct o)
- getUnixSocketAddressPath :: (MonadIO m, IsUnixSocketAddress o) => o -> m Text
- constructUnixSocketAddressPathAsArray :: (IsUnixSocketAddress o, MonadIO m) => ByteString -> m (GValueConstruct o)
- getUnixSocketAddressPathAsArray :: (MonadIO m, IsUnixSocketAddress o) => o -> m (Maybe ByteString)
Exported types
newtype UnixSocketAddress Source #
Memory-managed wrapper type.
Instances
Eq UnixSocketAddress Source # | |
Defined in GI.Gio.Objects.UnixSocketAddress (==) :: UnixSocketAddress -> UnixSocketAddress -> Bool # (/=) :: UnixSocketAddress -> UnixSocketAddress -> Bool # | |
IsGValue UnixSocketAddress Source # | Convert |
Defined in GI.Gio.Objects.UnixSocketAddress toGValue :: UnixSocketAddress -> IO GValue # fromGValue :: GValue -> IO UnixSocketAddress # | |
ManagedPtrNewtype UnixSocketAddress Source # | |
TypedObject UnixSocketAddress Source # | |
Defined in GI.Gio.Objects.UnixSocketAddress | |
GObject UnixSocketAddress Source # | |
Defined in GI.Gio.Objects.UnixSocketAddress | |
HasParentTypes UnixSocketAddress Source # | |
Defined in GI.Gio.Objects.UnixSocketAddress | |
type ParentTypes UnixSocketAddress Source # | |
Defined in GI.Gio.Objects.UnixSocketAddress |
class (GObject o, IsDescendantOf UnixSocketAddress o) => IsUnixSocketAddress o Source #
Type class for types which can be safely cast to UnixSocketAddress
, for instance with toUnixSocketAddress
.
Instances
(GObject o, IsDescendantOf UnixSocketAddress o) => IsUnixSocketAddress o Source # | |
Defined in GI.Gio.Objects.UnixSocketAddress |
toUnixSocketAddress :: (MonadIO m, IsUnixSocketAddress o) => o -> m UnixSocketAddress Source #
Cast to UnixSocketAddress
, for types for which this is known to be safe. For general casts, use castTo
.
Methods
Overloaded methods
abstractNamesSupported
unixSocketAddressAbstractNamesSupported Source #
:: (HasCallStack, MonadIO m) | |
=> m Bool | Returns: |
Checks if abstract UNIX domain socket names are supported.
Since: 2.22
getAddressType
unixSocketAddressGetAddressType Source #
:: (HasCallStack, MonadIO m, IsUnixSocketAddress a) | |
=> a |
|
-> m UnixSocketAddressType | Returns: a |
Gets address
's type.
Since: 2.26
getIsAbstract
unixSocketAddressGetIsAbstract Source #
:: (HasCallStack, MonadIO m, IsUnixSocketAddress a) | |
=> a |
|
-> m Bool | Returns: |
getPath
unixSocketAddressGetPath Source #
:: (HasCallStack, MonadIO m, IsUnixSocketAddress a) | |
=> a |
|
-> m Text | Returns: the path for |
Gets address
's path, or for abstract sockets the "name".
Guaranteed to be zero-terminated, but an abstract socket
may contain embedded zeros, and thus you should use
unixSocketAddressGetPathLen
to get the true length
of this string.
Since: 2.22
getPathLen
unixSocketAddressGetPathLen Source #
:: (HasCallStack, MonadIO m, IsUnixSocketAddress a) | |
=> a |
|
-> m Word64 | Returns: the length of the path |
new
:: (HasCallStack, MonadIO m) | |
=> Text |
|
-> m UnixSocketAddress | Returns: a new |
Creates a new UnixSocketAddress
for path
.
To create abstract socket addresses, on systems that support that,
use unixSocketAddressNewAbstract
.
Since: 2.22
newAbstract
unixSocketAddressNewAbstract Source #
:: (HasCallStack, MonadIO m) | |
=> [Int8] |
|
-> m UnixSocketAddress | Returns: a new |
Deprecated: Use unixSocketAddressNewWithType
.
Creates a new UnixSocketAddressTypeAbstractPadded
UnixSocketAddress
for path
.
newWithType
unixSocketAddressNewWithType Source #
:: (HasCallStack, MonadIO m) | |
=> [Int8] |
|
-> UnixSocketAddressType |
|
-> m UnixSocketAddress | Returns: a new |
Creates a new UnixSocketAddress
of type type
with name path
.
If type
is UnixSocketAddressTypePath
, this is equivalent to
calling unixSocketAddressNew
.
If type
is UnixSocketAddressTypeAnonymous
, path
and pathLen
will be
ignored.
If pathType
is UnixSocketAddressTypeAbstract
, then pathLen
bytes of path
will be copied to the socket's path, and only those
bytes will be considered part of the name. (If pathLen
is -1,
then path
is assumed to be NUL-terminated.) For example, if path
was "test", then calling socketAddressGetNativeSize
on the
returned socket would return 7 (2 bytes of overhead, 1 byte for the
abstract-socket indicator byte, and 4 bytes for the name "test").
If pathType
is UnixSocketAddressTypeAbstractPadded
, then
pathLen
bytes of path
will be copied to the socket's path, the
rest of the path will be padded with 0 bytes, and the entire
zero-padded buffer will be considered the name. (As above, if
pathLen
is -1, then path
is assumed to be NUL-terminated.) In
this case, socketAddressGetNativeSize
will always return
the full size of a struct sockaddr_un
, although
unixSocketAddressGetPathLen
will still return just the
length of path
.
UnixSocketAddressTypeAbstract
is preferred over
UnixSocketAddressTypeAbstractPadded
for new programs. Of course,
when connecting to a server created by another process, you must
use the appropriate type corresponding to how that process created
its listening socket.
Since: 2.26
Properties
abstract
Whether or not this is an abstract address
constructUnixSocketAddressAbstract :: (IsUnixSocketAddress o, MonadIO m) => Bool -> m (GValueConstruct o) Source #
Construct a GValueConstruct
with valid value for the “abstract
” property. This is rarely needed directly, but it is used by new
.
getUnixSocketAddressAbstract :: (MonadIO m, IsUnixSocketAddress o) => o -> m Bool Source #
Get the value of the “abstract
” property.
When overloading is enabled, this is equivalent to
get
unixSocketAddress #abstract
addressType
No description available in the introspection data.
constructUnixSocketAddressAddressType :: (IsUnixSocketAddress o, MonadIO m) => UnixSocketAddressType -> m (GValueConstruct o) Source #
Construct a GValueConstruct
with valid value for the “address-type
” property. This is rarely needed directly, but it is used by new
.
getUnixSocketAddressAddressType :: (MonadIO m, IsUnixSocketAddress o) => o -> m UnixSocketAddressType Source #
Get the value of the “address-type
” property.
When overloading is enabled, this is equivalent to
get
unixSocketAddress #addressType
path
No description available in the introspection data.
constructUnixSocketAddressPath :: (IsUnixSocketAddress o, MonadIO m) => Text -> m (GValueConstruct o) Source #
Construct a GValueConstruct
with valid value for the “path
” property. This is rarely needed directly, but it is used by new
.
getUnixSocketAddressPath :: (MonadIO m, IsUnixSocketAddress o) => o -> m Text Source #
Get the value of the “path
” property.
When overloading is enabled, this is equivalent to
get
unixSocketAddress #path
pathAsArray
No description available in the introspection data.
constructUnixSocketAddressPathAsArray :: (IsUnixSocketAddress o, MonadIO m) => ByteString -> m (GValueConstruct o) Source #
Construct a GValueConstruct
with valid value for the “path-as-array
” property. This is rarely needed directly, but it is used by new
.
getUnixSocketAddressPathAsArray :: (MonadIO m, IsUnixSocketAddress o) => o -> m (Maybe ByteString) Source #
Get the value of the “path-as-array
” property.
When overloading is enabled, this is equivalent to
get
unixSocketAddress #pathAsArray