Class UnixSocketAddress

All Implemented Interfaces:
PointerInterface

public class UnixSocketAddress extends SocketAddress
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.

https://docs.gtk.org/gio/class.UnixSocketAddress.html

  • Constructor Details

    • UnixSocketAddress

      public UnixSocketAddress(PointerContainer pointer)
    • UnixSocketAddress

      public UnixSocketAddress(@Nonnull Str path)
      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

      public UnixSocketAddress(String path)
      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

      public static ClassHandler 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 name
      path_len - the length of @path, or -1
      type - a #GUnixSocketAddressType
      Returns:
      a new #GUnixSocketAddress
    • newWithTypeUnixSocketAddress

      public static UnixSocketAddress newWithTypeUnixSocketAddress(String 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 name
      path_len - the length of @path, or -1
      type - a #GUnixSocketAddressType
      Returns:
      a new #GUnixSocketAddress
    • getAddressType

      public int getAddressType()
      Gets @address's type.
      Returns:
      a #GUnixSocketAddressType
    • getPath

      public Str 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

      public SocketConnectable asSocketConnectable()
      Implements interface SocketConnectable. Call this to get access to interface functions.
      Overrides:
      asSocketConnectable in class SocketAddress
      Returns:
      SocketConnectable
    • getTypeID

      public static long getTypeID()
    • getParentTypeID

      public static long getParentTypeID()
    • getTypeSize

      public static TypeSystem.TypeSize getTypeSize()
    • getParentTypeSize

      public static TypeSystem.TypeSize getParentTypeSize()
    • getInstanceSize

      public static int getInstanceSize()