Copyright | Will Thompson and Iñaki García Etxebarria |
---|---|
License | LGPL-2.1 |
Maintainer | Iñaki García Etxebarria |
Safe Haskell | None |
Language | Haskell2010 |
Support for UNIX-domain (also known as local) sockets, corresponding to
struct sockaddr_un
.
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 G_IO_ERROR_NOT_SUPPORTED
errors. You can use unixSocketAddressAbstractNamesSupported
to see if abstract names are supported.
Since GLib 2.72, GUnixSocketAddress
is available on all platforms. It
requires underlying system support (such as Windows 10 with AF_UNIX
) at
run time.
Before GLib 2.72, <gio/gunixsocketaddress.h>
belonged to the UNIX-specific
GIO interfaces, thus you had to use the gio-unix-2.0.pc
pkg-config file
when using it. This is no longer necessary since GLib 2.72.
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 CSize
- 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 # | |
GObject UnixSocketAddress Source # | |
Defined in GI.Gio.Objects.UnixSocketAddress | |
ManagedPtrNewtype UnixSocketAddress Source # | |
TypedObject UnixSocketAddress Source # | |
Defined in GI.Gio.Objects.UnixSocketAddress | |
HasParentTypes UnixSocketAddress Source # | |
Defined in GI.Gio.Objects.UnixSocketAddress | |
IsGValue (Maybe UnixSocketAddress) Source # | Convert |
Defined in GI.Gio.Objects.UnixSocketAddress gvalueGType_ :: IO GType # gvalueSet_ :: Ptr GValue -> Maybe UnixSocketAddress -> IO () # gvalueGet_ :: Ptr GValue -> IO (Maybe 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
Click to display all available methods, including inherited ones
Methods
bindProperty, bindPropertyFull, enumerate, forceFloating, freezeNotify, getv, isFloating, notify, notifyByPspec, proxyEnumerate, ref, refSink, runDispose, stealData, stealQdata, thawNotify, toNative, toString, unref, watchClosure.
Getters
getAddressType, getData, getFamily, getIsAbstract, getNativeSize, getPath, getPathLen, getProperty, getQdata.
Setters
abstractNamesSupported
unixSocketAddressAbstractNamesSupported Source #
:: (HasCallStack, MonadIO m) | |
=> m Bool |
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 |
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 CSize | 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
The type of Unix socket address.
Since: 2.22
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
Unix socket path.
Since: 2.22
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
Unix socket path, as a byte array.
Since: 2.22
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