Class DirectConnection

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

    public class DirectConnection
    extends AbstractConnection
    Handles a peer to peer connection between two applications without a bus daemon.

    Signal Handlers and method calls from remote objects are run in their own threads, you MUST handle the concurrency issues.

    • Field Detail

      • logger

        private final org.slf4j.Logger logger
      • machineId

        private final java.lang.String machineId
    • Constructor Detail

      • DirectConnection

        @Deprecated(since="4.1.0",
                    forRemoval=true)
        public DirectConnection​(java.lang.String _address)
                         throws DBusException
        Deprecated, for removal: This API element is subject to removal in a future version.
        Create a direct connection to another application.
        Parameters:
        _address - The address to connect to. This is a standard D-Bus address, except that the additional parameter 'listen=true' should be added in the application which is creating the socket.
        Throws:
        DBusException - on error
      • DirectConnection

        @Deprecated(since="4.1.0",
                    forRemoval=true)
        public DirectConnection​(java.lang.String _address,
                                int _timeout)
                         throws DBusException
        Deprecated, for removal: This API element is subject to removal in a future version.
        Create a direct connection to another application.
        Parameters:
        _address - The address to connect to. This is a standard D-Bus address, except that the additional parameter 'listen=true' should be added in the application which is creating the socket.
        _timeout - the timeout set for the underlying socket. 0 will block forever on the underlying socket.
        Throws:
        DBusException - on error
    • Method Detail

      • createTransportConfig

        @Deprecated(since="4.2.0",
                    forRemoval=true)
        static TransportConfig createTransportConfig​(java.lang.String _address,
                                                     int _timeout)
        Deprecated, for removal: This API element is subject to removal in a future version.
      • listen

        public void listen()
        Use this method when running on server side. Call will block.
        Overrides:
        listen in class AbstractConnection
      • createMachineId

        private java.lang.String createMachineId()
      • getRemoteObject

        public DBusInterface getRemoteObject​(java.lang.String _objectPath)
                                      throws DBusException
        Return a reference to a remote object. This method will always refer to the well known name (if given) rather than resolving it to a unique bus name. In particular this means that if a process providing the well known name disappears and is taken over by another process proxy objects gained by this method will make calls on the new proccess. This method will use bus introspection to determine the interfaces on a remote object and so may block and may fail. The resulting proxy object will, however, be castable to any interface it implements. It will also autostart the process if applicable. Also note that the resulting proxy may fail to execute the correct method with overloaded methods and that complex types may fail in interesting ways. Basically, if something odd happens, try specifying the interface explicitly.
        Parameters:
        _objectPath - The path on which the process is exporting the object.
        Returns:
        A reference to a remote object.
        Throws:
        java.lang.ClassCastException - If type is not a sub-type of DBusInterface
        DBusException - If busname or objectpath are incorrectly formatted.
      • getRemoteObject

        public <T extends DBusInterface> T getRemoteObject​(java.lang.String _objectPath,
                                                           java.lang.Class<T> _type)
                                                    throws DBusException
        Return a reference to a remote object. This method will always refer to the well known name (if given) rather than resolving it to a unique bus name. In particular this means that if a process providing the well known name disappears and is taken over by another process proxy objects gained by this method will make calls on the new proccess.
        Type Parameters:
        T - class which extends DBusInterface
        Parameters:
        _objectPath - The path on which the process is exporting the object.
        _type - The interface they are exporting it on. This type must have the same full class name and exposed method signatures as the interface the remote object is exporting.
        Returns:
        A reference to a remote object.
        Throws:
        java.lang.ClassCastException - If type is not a sub-type of DBusInterface
        DBusException - If busname or objectpath are incorrectly formatted or type is not in a package.
      • addSigHandler

        protected <T extends DBusSignal> java.lang.AutoCloseable addSigHandler​(DBusMatchRule _rule,
                                                                               DBusSigHandler<T> _handler)
                                                                        throws DBusException
        Description copied from class: AbstractConnection
        Add a signal handler with the given DBusMatchRule to DBus. The rule will be added to DBus if it was not added before. If the rule was already added, the signal handler is added to the internal map receiving the same signal as the first (and additional) handlers for this rule.
        Specified by:
        addSigHandler in class AbstractConnection
        Type Parameters:
        T - signal type
        Parameters:
        _rule - rule to add
        _handler - handler to use
        Returns:
        closeable that removes signal handler
        Throws:
        DBusException - on error
      • addGenericSigHandler

        protected java.lang.AutoCloseable addGenericSigHandler​(DBusMatchRule _rule,
                                                               DBusSigHandler<DBusSignal> _handler)
                                                        throws DBusException
        Description copied from class: AbstractConnection
        Adds a DBusMatchRule to with a generic signal handler. Generic signal handlers allow receiving different signals with the same handler. If the rule was already added, the signal handler is added to the internal map receiving the same signal as the first (and additional) handlers for this rule.
        Specified by:
        addGenericSigHandler in class AbstractConnection
        Parameters:
        _rule - rule to add
        _handler - handler to use
        Returns:
        closeable that removes signal handler
        Throws:
        DBusException - on error