Class NativeUnixSocketTransport
java.lang.Object
org.freedesktop.dbus.connections.transports.AbstractTransport
org.freedesktop.dbus.connections.transports.AbstractUnixTransport
org.freedesktop.dbus.transport.jre.NativeUnixSocketTransport
- All Implemented Interfaces:
Closeable,AutoCloseable
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.
Please 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.
- Since:
- v4.0.0 - 2021-09-01
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate ServerSocketChannelprivate SocketChannelprivate final UnixDomainSocketAddress -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionMethod to accept new incoming listening connections.
This is the place whereaccept()is called on the server socket created byAbstractTransport.bindImpl().
Therefore this method will block until a client is connected.protected voidbindImpl()Method called to prepare listening for connections.
This is usually the place where theServerSocketChannelis created andbind()is called.protected voidMethod which is called to close a transport.
Should be used to close all sockets and/or serversockets.Establish a connection to DBus using unix sockets.intgetUid(SocketChannel _sock) protected booleanMethod to indicate if passing of file descriptors is allowed.protected booleanisBound()Status of the server socket if this transport is configured to be a server connection.
Must be false ifAbstractTransport.bindImpl()was not called.Methods inherited from class org.freedesktop.dbus.connections.transports.AbstractTransport
close, connect, getAddress, getLogger, getMessageFactory, getSaslConfig, getTransportConfig, getTransportConnection, isConnected, isFileDescriptorSupported, isListening, listen, readMessage, setPreConnectCallback, toString, writeMessage
-
Field Details
-
unixSocketAddress
-
socket
-
serverSocket
-
-
Constructor Details
-
NativeUnixSocketTransport
NativeUnixSocketTransport(UnixBusAddress _address, TransportConfig _config) throws TransportConfigurationException - Throws:
TransportConfigurationException
-
-
Method Details
-
hasFileDescriptorSupport
protected boolean hasFileDescriptorSupport()Description copied from class:AbstractTransportMethod to indicate if passing of file descriptors is allowed.- Specified by:
hasFileDescriptorSupportin classAbstractTransport- Returns:
- true to allow FD passing, false otherwise
-
connectImpl
Establish a connection to DBus using unix sockets.- Specified by:
connectImplin classAbstractTransport- Returns:
- socket channel connected to DBus server
- Throws:
IOException- on error
-
bindImpl
Description copied from class:AbstractTransportMethod called to prepare listening for connections.
This is usually the place where theServerSocketChannelis created andbind()is called.- Specified by:
bindImplin classAbstractTransport- Throws:
IOException- when connection fails
-
acceptImpl
Description copied from class:AbstractTransportMethod to accept new incoming listening connections.
This is the place whereaccept()is called on the server socket created byAbstractTransport.bindImpl().
Therefore this method will block until a client is connected.- Specified by:
acceptImplin classAbstractTransport- Returns:
- newly connected client socket
- Throws:
IOException- when connection fails
-
isBound
protected boolean isBound()Description copied from class:AbstractTransportStatus of the server socket if this transport is configured to be a server connection.
Must be false ifAbstractTransport.bindImpl()was not called.- Specified by:
isBoundin classAbstractTransport- Returns:
- boolean
-
closeTransport
Description copied from class:AbstractTransportMethod which is called to close a transport.
Should be used to close all sockets and/or serversockets.- Specified by:
closeTransportin classAbstractTransport- Throws:
IOException- when something fails while closing transport
-
getUid
- Specified by:
getUidin classAbstractUnixTransport- Throws:
IOException
-