Klasse DirectConnection

Alle implementierten Schnittstellen:
Closeable, 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.

  • Methodendetails

    • listen

      public void listen() throws IOException
      Use this method when running on server side.

      Call will block.

      Setzt außer Kraft:
      listen in Klasse AbstractConnectionBase
      Löst aus:
      IOException - when connection fails
    • getRemoteObject

      public DBusInterface getRemoteObject(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.
      Parameter:
      _objectPath - The path on which the process is exporting the object.
      Gibt zurück:
      A reference to a remote object.
      Löst aus:
      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(String _objectPath, 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.
      Typparameter:
      T - class which extends DBusInterface
      Parameter:
      _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.
      Gibt zurück:
      A reference to a remote object.
      Löst aus:
      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.
    • removeSigHandler

      protected <T extends DBusSignal> void removeSigHandler(DBusMatchRule _rule, DBusSigHandler<T> _handler) throws DBusException
      Beschreibung aus Klasse kopiert: AbstractConnection
      Remove a match rule with the given DBusSigHandler. The rule will only be removed from DBus if no other additional handlers are registered to the same rule.
      Angegeben von:
      removeSigHandler in Klasse AbstractConnection
      Typparameter:
      T - signal type
      Parameter:
      _rule - rule to remove
      _handler - handler to remove
      Löst aus:
      DBusException - on error
    • addSigHandler

      protected <T extends DBusSignal> AutoCloseable addSigHandler(DBusMatchRule _rule, DBusSigHandler<T> _handler) throws DBusException
      Beschreibung aus Klasse kopiert: 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.
      Angegeben von:
      addSigHandler in Klasse AbstractConnection
      Typparameter:
      T - signal type
      Parameter:
      _rule - rule to add
      _handler - handler to use
      Gibt zurück:
      closeable that removes signal handler
      Löst aus:
      DBusException - on error
    • removeGenericSigHandler

      protected void removeGenericSigHandler(DBusMatchRule _rule, DBusSigHandler<DBusSignal> _handler) throws DBusException
      Beschreibung aus Klasse kopiert: AbstractConnection
      Remove a generic signal handler with the given DBusMatchRule. The rule will only be removed from DBus if no other additional handlers are registered to the same rule.
      Angegeben von:
      removeGenericSigHandler in Klasse AbstractConnection
      Parameter:
      _rule - rule to remove
      _handler - handler to remove
      Löst aus:
      DBusException - on error
    • addGenericSigHandler

      protected AutoCloseable addGenericSigHandler(DBusMatchRule _rule, DBusSigHandler<DBusSignal> _handler) throws DBusException
      Beschreibung aus Klasse kopiert: 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.
      Angegeben von:
      addGenericSigHandler in Klasse AbstractConnection
      Parameter:
      _rule - rule to add
      _handler - handler to use
      Gibt zurück:
      closeable that removes signal handler
      Löst aus:
      DBusException - on error
    • getExportedObject

      public <T extends DBusInterface> T getExportedObject(String _source, String _path, Class<T> _type) throws DBusException
      Beschreibung aus Klasse kopiert: AbstractConnectionBase
      Retrieves an remote object using source and path. Will use the given type as object class.
      Angegeben von:
      getExportedObject in Klasse AbstractConnectionBase
      Parameter:
      _source - source
      _path - path
      _type - class of remote object
      Gibt zurück:
      DBusInterface compatible object
      Löst aus:
      DBusException
    • getMachineId

      public String getMachineId()
      Beschreibung aus Klasse kopiert: AbstractConnectionBase
      The generated UUID of this machine.
      Angegeben von:
      getMachineId in Klasse AbstractConnectionBase
      Gibt zurück:
      String
    • getExportedObject

      public DBusInterface getExportedObject(String _source, String _path) throws DBusException
      Beschreibung aus Klasse kopiert: AbstractConnectionBase
      Retrieves an remote object using source and path. Will try to find suitable exported DBusInterface automatically.
      Angegeben von:
      getExportedObject in Klasse AbstractConnectionBase
      Parameter:
      _source - source
      _path - path
      Gibt zurück:
      DBusInterface compatible object
      Löst aus:
      DBusException