Class AbstractTransport
java.lang.Object
org.freedesktop.dbus.connections.transports.AbstractTransport
- All Implemented Interfaces:
Closeable, AutoCloseable
- Direct Known Subclasses:
AbstractUnixTransport
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedAbstractTransport(BusAddress _address, TransportConfig _config) -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract SocketChannelMethod to accept new incoming listening connections.
This is the place whereaccept()is called on the server socket created bybindImpl().
Therefore this method will block until a client is connected.protected abstract voidbindImpl()Method called to prepare listening for connections.
This is usually the place where theServerSocketChannelis created andbind()is called.final voidclose()protected abstract voidMethod which is called to close a transport.
Should be used to close all sockets and/or serversockets.final SocketChannelconnect()Establish connection on created transport.protected abstract SocketChannelAbstract method implemented by concrete sub classes to establish a connection.protected BusAddressReturns theBusAddressused for this transport.protected org.slf4j.LoggerGet the logger in subclasses.Currently configured message factory.protected SaslConfigReturns the current configuration used for SASL authentication.Returns the current transport connection.protected abstract booleanMethod to indicate if passing of file descriptors is allowed.protected abstract booleanisBound()Status of the server socket if this transport is configured to be a server connection.
Must be false ifbindImpl()was not called.booleanReturns true if inputReader and outputWriter are not yet closed.booleanfinal booleanTrue if this transport connection is a listening (server) connection.final TransportConnectionlisten()Start listening on created transport.Read a message from the underlying socket.voidSet a callback which will be called right before the connection will be established to the transport.toString()voidwriteMessage(Message _msg) Write a message to the underlying socket.
-
Constructor Details
-
AbstractTransport
-
-
Method Details
-
writeMessage
Write a message to the underlying socket.- Parameters:
_msg- message to write- Throws:
IOException- on write error or if output was already closed or null
-
readMessage
Read a message from the underlying socket.- Returns:
- read message, maybe null
- Throws:
IOException- when input already close or nullDBusException- when message could not be converted to a DBus message
-
isConnected
public boolean isConnected()Returns true if inputReader and outputWriter are not yet closed.- Returns:
- boolean
-
hasFileDescriptorSupport
protected abstract boolean hasFileDescriptorSupport()Method to indicate if passing of file descriptors is allowed.- Returns:
- true to allow FD passing, false otherwise
-
connectImpl
Abstract method implemented by concrete sub classes to establish a connection.- Returns:
- socket channel connected to DBus server
- Throws:
IOException- when connection fails
-
acceptImpl
Method to accept new incoming listening connections.
This is the place whereaccept()is called on the server socket created bybindImpl().
Therefore this method will block until a client is connected.- Returns:
- newly connected client socket
- Throws:
IOException- when connection fails- Since:
- 5.0.0 - 2023-10-20
-
bindImpl
Method called to prepare listening for connections.
This is usually the place where theServerSocketChannelis created andbind()is called.- Throws:
IOException- when connection fails- Since:
- 5.0.0 - 2023-10-20
-
closeTransport
Method which is called to close a transport.
Should be used to close all sockets and/or serversockets.- Throws:
IOException- when something fails while closing transport- Since:
- 5.0.0 - 2023-10-20
-
isBound
protected abstract boolean isBound()Status of the server socket if this transport is configured to be a server connection.
Must be false ifbindImpl()was not called.- Returns:
- boolean
- Since:
- 5.0.0 - 2023-10-20
-
connect
Establish connection on created transport.
This method can only be used for non-listening connections.
Trying to use this with listening addresses will throw anInvalidBusAddressException.- Returns:
SocketChannelof the created connection- Throws:
IOException- if connection fails
-
isListening
public final boolean isListening()True if this transport connection is a listening (server) connection.- Returns:
- boolean
-
listen
Start listening on created transport.
This method can only be used for listening connections.
Trying to use this with non-listening addresses will throw anInvalidBusAddressException.Will return the
TransportConnectionas soon as a client connects.
Therefore this method should be called in a loop to accept multiple clients- Returns:
TransportConnectioncontaining createdSocketChannelandIMessageReader/IMessageWriter- Throws:
IOException- if connection fails
-
setPreConnectCallback
Set a callback which will be called right before the connection will be established to the transport.- Parameters:
_run- runnable to execute, null if no callback should be executed- Since:
- 4.2.0 - 2022-07-20
-
getAddress
Returns theBusAddressused for this transport.- Returns:
- BusAddress, never null
-
getLogger
protected org.slf4j.Logger getLogger()Get the logger in subclasses.- Returns:
- Logger, never null
-
getSaslConfig
Returns the current configuration used for SASL authentication.- Returns:
- SaslConfig, never null
-
getTransportConnection
Returns the current transport connection.- Returns:
- TransportConnection, null if not connected yet
-
getMessageFactory
-
getTransportConfig
-
isFileDescriptorSupported
public boolean isFileDescriptorSupported() -
toString
-
close
- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Throws:
IOException
-