Class EmbeddedDBusDaemon

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable

    public class EmbeddedDBusDaemon
    extends java.lang.Object
    implements java.io.Closeable
    Simple DBusDaemon implementation to use if no DBusDaemon is running on the OS level.
    • Field Detail

      • LOGGER

        private static final org.slf4j.Logger LOGGER
      • closed

        private final java.util.concurrent.atomic.AtomicBoolean closed
      • connectionReady

        private final java.util.concurrent.atomic.AtomicBoolean connectionReady
      • unixSocketFileOwner

        private java.lang.String unixSocketFileOwner
      • unixSocketFileGroup

        private java.lang.String unixSocketFileGroup
      • unixSocketFilePermissions

        private java.nio.file.attribute.PosixFilePermission[] unixSocketFilePermissions
    • Constructor Detail

      • EmbeddedDBusDaemon

        public EmbeddedDBusDaemon​(BusAddress _address)
    • Method Detail

      • close

        public void close()
                   throws java.io.IOException
        Shutdown the running DBusDaemon instance.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Throws:
        java.io.IOException
      • startInForeground

        public void startInForeground()
        Run the DBusDaemon in foreground.

        This is a blocking operation.

      • startInBackground

        public void startInBackground()
        Start the DBusDaemon in background and returns immediately.

        This method may return before the background thread is ready. To ensure the the background thread is running on return use startInBackgroundAndWait(long).

      • startInBackgroundAndWait

        public void startInBackgroundAndWait​(long _maxWaitMillis)
        Starts the DBusDaemon in background.

        Will wait up to the given period of milliseconds for the background thread to get ready. If given wait time exceeded, a RuntimeException is thrown.

        Parameters:
        _maxWaitMillis - maximum wait time in milliseconds
      • isRunning

        public boolean isRunning()
        Whether the DBusDaemon is still running.
        Returns:
        true if running, false otherwise
      • setSaslAuthMode

        public void setSaslAuthMode​(TransportBuilder.SaslAuthMode _saslAuthMode)
        Use this to override the default authentication mode which would be used by the transport based on the BusAddress.
        Parameters:
        _saslAuthMode - auth mode, null to use default
      • setUnixSocketOwner

        public void setUnixSocketOwner​(java.lang.String _owner)
        The file owner for the created unix socket.
        Ignored if TCP is used.

        Will only work if currently running JVM process user has suitable permissions to change the owner.
        Parameters:
        _owner - owner to set
      • setUnixSocketGroup

        public void setUnixSocketGroup​(java.lang.String _group)
        The file group for the created unix socket.
        Ignored if TCP is used.

        Will only work if currently running JVM process user has suitable permissions to change the group.
        Parameters:
        _group - group to set
      • setUnixSocketPermissions

        public void setUnixSocketPermissions​(java.nio.file.attribute.PosixFilePermission... _permissions)
        The file permissions for the created unix socket.
        Ignored if TCP is used or if the OS is Windows.

        Will only work if currently running JVM process user has suitable permissions to change the permissions.
        Parameters:
        _permissions - permissions to set
      • setDaemonAndStart

        private void setDaemonAndStart​(AbstractTransport _transport)
      • startListening

        private void startListening()
                             throws java.io.IOException,
                                    DBusException
        Start listening for incoming connections.

        Will throw IllegalArgumentException if a unsupported transport is used.

        Throws:
        java.io.IOException - when connection fails
        DBusException - when the provided bus address is wrong