Top Description Fields Constructors Methods
org.freedesktop.dbus.transport.jre

public Class NativeUnixSocketTransport

extends AbstractUnixTransport
Class Inheritance
Imports
org.freedesktop.dbus.connections.SASL, org.freedesktop.dbus.connections.config.TransportConfig, org.freedesktop.dbus.connections.transports.AbstractUnixTransport, org.freedesktop.dbus.exceptions.TransportConfigurationException, java.io.IOException, java.net.StandardProtocolFamily, .UnixDomainSocketAddress, java.nio.channels.ServerSocketChannel, .SocketChannel, java.nio.file.Files

Transport type representing a transport connection to a unix socket. This implementation uses features of Java 16+ to connect to a unix socket without a 3rd party library.

Note

The functionality of the native unix sockets in Java are limited. 'Side-channel' communication (e.g. passing file descriptors) is not possible (unlike using jnr-unix socket + dbus-java-nativefd).

Also using 'abstract' sockets is not possible when using this native implementation.
In most cases this implementation should suit our needs. If it does not fit for you, use jnr-unixsocket instead.

Author
hypfvieh
Since
v4.0.0 - 2021-09-01

Field Summary

Modifier and TypeField and Description
private ServerSocketChannel
private SocketChannel
private final UnixDomainSocketAddress

Constructor Summary

AccessConstructor and Description
pack-priv

Method Summary

Modifier and TypeMethod and Description
public SocketChannel
acceptImpl()

Implements abstract org.freedesktop.dbus.connections.transports.AbstractTransport.acceptImpl.

Method to accept new incoming listening connections.

protected void
bindImpl()

Implements abstract org.freedesktop.dbus.connections.transports.AbstractTransport.bindImpl.

Method called to prepare listening for connections.

protected void
closeTransport()

Implements abstract org.freedesktop.dbus.connections.transports.AbstractTransport.closeTransport.

Method which is called to close a transport.

public SocketChannel
connectImpl()

Implements abstract org.freedesktop.dbus.connections.transports.AbstractTransport.connectImpl.

Establish a connection to DBus using unix sockets.

public int
protected boolean
hasFileDescriptorSupport()

Implements abstract org.freedesktop.dbus.connections.transports.AbstractTransport.hasFileDescriptorSupport.

Method to indicate if passing of file descriptors is allowed.

protected boolean
isBound()

Implements abstract org.freedesktop.dbus.connections.transports.AbstractTransport.isBound.

Status of the server socket if this transport is configured to be a server connection.

Field Detail

serverSocketback to summary
private ServerSocketChannel serverSocket
socketback to summary
private SocketChannel socket
unixSocketAddressback to summary
private final UnixDomainSocketAddress unixSocketAddress

Constructor Detail

NativeUnixSocketTransportback to summary
pack-priv NativeUnixSocketTransport(UnixBusAddress _address, TransportConfig _config) throws TransportConfigurationException

Method Detail

acceptImplback to summary
public SocketChannel acceptImpl() throws IOException

Implements abstract org.freedesktop.dbus.connections.transports.AbstractTransport.acceptImpl.

Doc from org.freedesktop.dbus.connections.transports.AbstractTransport.acceptImpl.

Method to accept new incoming listening connections.
This is the place where accept() is called on the server socket created by bindImpl().
Therefore this method will block until a client is connected.

Returns:SocketChannel

newly connected client socket

Annotations
@Override
Exceptions
IOException:
when connection fails
bindImplback to summary
protected void bindImpl() throws IOException

Implements abstract org.freedesktop.dbus.connections.transports.AbstractTransport.bindImpl.

Doc from org.freedesktop.dbus.connections.transports.AbstractTransport.bindImpl.

Method called to prepare listening for connections.
This is usually the place where the ServerSocketChannel is created and bind() is called.

Annotations
@Override
Exceptions
IOException:
when connection fails
closeTransportback to summary
protected void closeTransport() throws IOException

Implements abstract org.freedesktop.dbus.connections.transports.AbstractTransport.closeTransport.

Doc from org.freedesktop.dbus.connections.transports.AbstractTransport.closeTransport.

Method which is called to close a transport.
Should be used to close all sockets and/or serversockets.

Annotations
@Override
Exceptions
IOException:
when something fails while closing transport
connectImplback to summary
public SocketChannel connectImpl() throws IOException

Implements abstract org.freedesktop.dbus.connections.transports.AbstractTransport.connectImpl.

Establish a connection to DBus using unix sockets.

Returns:SocketChannel

Doc from org.freedesktop.dbus.connections.transports.AbstractTransport.connectImpl.

socket channel connected to DBus server

Annotations
@Override
Exceptions
IOException:
on error
getUidback to summary
public int getUid(SocketChannel _sock) throws IOException

Implements abstract org.freedesktop.dbus.connections.transports.AbstractUnixTransport.getUid.

Annotations
@Override
hasFileDescriptorSupportback to summary
protected boolean hasFileDescriptorSupport()

Implements abstract org.freedesktop.dbus.connections.transports.AbstractTransport.hasFileDescriptorSupport.

Doc from org.freedesktop.dbus.connections.transports.AbstractTransport.hasFileDescriptorSupport.

Method to indicate if passing of file descriptors is allowed.

Returns:boolean

true to allow FD passing, false otherwise

Annotations
@Override
isBoundback to summary
protected boolean isBound()

Implements abstract org.freedesktop.dbus.connections.transports.AbstractTransport.isBound.

Doc from org.freedesktop.dbus.connections.transports.AbstractTransport.isBound.

Status of the server socket if this transport is configured to be a server connection.
Must be false if bindImpl() was not called.

Returns:boolean

boolean

Annotations
@Override