Package ch.bailu.gtk.gio
Class UnixSocketAddress
java.lang.Object
ch.bailu.gtk.type.Type
ch.bailu.gtk.type.Pointer
ch.bailu.gtk.gobject.Object
ch.bailu.gtk.gio.SocketAddress
ch.bailu.gtk.gio.UnixSocketAddress
- All Implemented Interfaces:
PointerInterface
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 %G_IO_ERROR_NOT_SUPPORTED
errors. You can use g_unix_socket_address_abstract_names_supported()
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.
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 g_unix_socket_address_abstract_names_supported()
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.
-
Nested Class Summary
Nested classes/interfaces inherited from class ch.bailu.gtk.gobject.Object
Object.OnBindingTransformFunc, Object.OnDestroyNotify, Object.OnDuplicateFunc, Object.OnNotify, Object.OnToggleNotify, Object.OnWeakNotify
-
Field Summary
Fields inherited from class ch.bailu.gtk.gobject.Object
SIGNAL_ON_NOTIFY
-
Constructor Summary
ConstructorDescriptionUnixSocketAddress
(PointerContainer pointer) UnixSocketAddress
(Str path) Creates a new #GUnixSocketAddress for @path.UnixSocketAddress
(String path) Creates a new #GUnixSocketAddress for @path. -
Method Summary
Modifier and TypeMethodDescriptionstatic boolean
Checks if abstract UNIX domain socket names are supported.Implements interfaceSocketConnectable
.int
Gets @address's type.static ClassHandler
static int
static long
static TypeSystem.TypeSize
getPath()
Gets @address's path, or for abstract sockets the "name".long
Gets the length of @address's path.static long
static TypeSystem.TypeSize
static UnixSocketAddress
newWithTypeUnixSocketAddress
(Str path, int path_len, int type) Creates a new #GUnixSocketAddress of type @type with name @path.static UnixSocketAddress
newWithTypeUnixSocketAddress
(String path, int path_len, int type) Creates a new #GUnixSocketAddress of type @type with name @path.Methods inherited from class ch.bailu.gtk.gio.SocketAddress
getFamily, getNativeSize, newFromNativeSocketAddress, toNative
Methods inherited from class ch.bailu.gtk.gobject.Object
addToggleRef, bindProperty, bindProperty, bindPropertyFull, bindPropertyFull, bindPropertyWithClosures, bindPropertyWithClosures, compatControl, connect, connect, disconnect, disconnect, dupData, dupData, dupQdata, forceFloating, freezeNotify, get, get, getData, getData, getProperty, getProperty, getQdata, interfaceFindProperty, interfaceInstallProperty, isFloating, notify, notify, notifyByPspec, onNotify, ref, refSink, removeToggleRef, replaceData, replaceData, replaceQdata, runDispose, set, set, setData, setData, setDataFull, setDataFull, setProperty, setProperty, setQdata, setQdataFull, stealData, stealData, stealQdata, takeRef, thawNotify, unref, watchClosure, weakRef, weakUnref
Methods inherited from class ch.bailu.gtk.type.Pointer
asCPointer, cast, connectSignal, disconnectSignals, disconnectSignals, equals, hashCode, throwIfNull, throwNullPointerException, toString, unregisterCallbacks, unregisterCallbacks
Methods inherited from class ch.bailu.gtk.type.Type
asCPointer, asCPointer, asCPointerNotNull, asJnaPointer, asJnaPointer, asPointer, asPointer, cast, cast, throwIfNull
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface ch.bailu.gtk.type.PointerInterface
asCPointerNotNull, asJnaPointer, asPointer, isNotNull, isNull
-
Constructor Details
-
UnixSocketAddress
-
UnixSocketAddress
Creates a new #GUnixSocketAddress for @path.
To create abstract socket addresses, on systems that support that,
use g_unix_socket_address_new_abstract().- Parameters:
path
- the socket path
-
UnixSocketAddress
Creates a new #GUnixSocketAddress for @path.
To create abstract socket addresses, on systems that support that,
use g_unix_socket_address_new_abstract().- Parameters:
path
- the socket path
-
-
Method Details
-
getClassHandler
-
newWithTypeUnixSocketAddress
public static UnixSocketAddress newWithTypeUnixSocketAddress(@Nonnull Str path, int path_len, int type) Creates a new #GUnixSocketAddress of type @type with name @path.
If @type is %G_UNIX_SOCKET_ADDRESS_PATH, this is equivalent to
calling g_unix_socket_address_new().
If @type is %G_UNIX_SOCKET_ADDRESS_ANONYMOUS, @path and @path_len will be
ignored.
If @path_type is %G_UNIX_SOCKET_ADDRESS_ABSTRACT, then @path_len
bytes of @path will be copied to the socket's path, and only those
bytes will be considered part of the name. (If @path_len is -1,
then @path is assumed to be NUL-terminated.) For example, if @path
was "test", then calling g_socket_address_get_native_size() 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 @path_type is %G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED, then
@path_len 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
@path_len is -1, then @path is assumed to be NUL-terminated.) In
this case, g_socket_address_get_native_size() will always return
the full size of a `struct sockaddr_un`, although
g_unix_socket_address_get_path_len() will still return just the
length of @path.
%G_UNIX_SOCKET_ADDRESS_ABSTRACT is preferred over
%G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED 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.- Parameters:
path
- the namepath_len
- the length of @path, or -1type
- a #GUnixSocketAddressType- Returns:
- a new #GUnixSocketAddress
-
newWithTypeUnixSocketAddress
Creates a new #GUnixSocketAddress of type @type with name @path.
If @type is %G_UNIX_SOCKET_ADDRESS_PATH, this is equivalent to
calling g_unix_socket_address_new().
If @type is %G_UNIX_SOCKET_ADDRESS_ANONYMOUS, @path and @path_len will be
ignored.
If @path_type is %G_UNIX_SOCKET_ADDRESS_ABSTRACT, then @path_len
bytes of @path will be copied to the socket's path, and only those
bytes will be considered part of the name. (If @path_len is -1,
then @path is assumed to be NUL-terminated.) For example, if @path
was "test", then calling g_socket_address_get_native_size() 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 @path_type is %G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED, then
@path_len 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
@path_len is -1, then @path is assumed to be NUL-terminated.) In
this case, g_socket_address_get_native_size() will always return
the full size of a `struct sockaddr_un`, although
g_unix_socket_address_get_path_len() will still return just the
length of @path.
%G_UNIX_SOCKET_ADDRESS_ABSTRACT is preferred over
%G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED 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.- Parameters:
path
- the namepath_len
- the length of @path, or -1type
- a #GUnixSocketAddressType- Returns:
- a new #GUnixSocketAddress
-
getAddressType
public int getAddressType()Gets @address's type.- Returns:
- a #GUnixSocketAddressType
-
getPath
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
g_unix_socket_address_get_path_len() to get the true length
of this string.- Returns:
- the path for @address
-
getPathLen
public long getPathLen()Gets the length of @address's path.
For details, see g_unix_socket_address_get_path().- Returns:
- the length of the path
-
abstractNamesSupported
public static boolean abstractNamesSupported()Checks if abstract UNIX domain socket names are supported.- Returns:
- %TRUE if supported, %FALSE otherwise
-
asSocketConnectable
Implements interfaceSocketConnectable
. Call this to get access to interface functions.- Overrides:
asSocketConnectable
in classSocketAddress
- Returns:
SocketConnectable
-
getTypeID
public static long getTypeID() -
getParentTypeID
public static long getParentTypeID() -
getTypeSize
-
getParentTypeSize
-
getInstanceSize
public static int getInstanceSize()
-