Interface DeviceConnect

  • All Superinterfaces:
    Behaviour, HandlerBehaviour
    All Known Subinterfaces:
    DeviceHandshaker

    @Beta
    public interface DeviceConnect
    extends HandlerBehaviour
    Abstraction of handler behaviour used to set-up and tear-down connections with a device. A connection is intended as the presence of state (e.g. a transport session) required to carry messages between this node and the device.
    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      boolean connect()
      Connects to the device, for example by opening the transport session that will be later used to send control messages.
      void disconnect()
      Disconnects from the device, for example closing any transport session previously opened.
      boolean hasConnection()
      Returns true if a connection to the device exists, false otherwise.
    • Method Detail

      • connect

        boolean connect()
                 throws IllegalStateException
        Connects to the device, for example by opening the transport session that will be later used to send control messages. Returns true if the connection was created successfully, false otherwise.

        The implementation should trigger without blocking any necessary handshake with the device to initialize the connection over the network, eventually generating a DeviceAgentEvent.Type.CHANNEL_OPEN event when ready.

        When calling this method while a connection to the device already exists, the behavior is not defined. For example, some implementations might require to first call disconnect(), while other might behave as a no-op.

        Returns:
        true if a connection was created successfully, false otherwise
        Throws:
        IllegalStateException - if a connection already exists and the implementation requires to call disconnect() first.
      • hasConnection

        boolean hasConnection()
        Returns true if a connection to the device exists, false otherwise. This method is NOT expected to send any message over the network to check for device reachability, but rather it should only give an indication if any internal connection state exists for the device. As such, it should NOT block execution.

        In general, when called after connect() it should always return true, while it is expected to always return false after calling disconnect() or if connect() was never called.

        Returns:
        true if the connection is open, false otherwise
      • disconnect

        void disconnect()
        Disconnects from the device, for example closing any transport session previously opened.

        Calling multiple times this method while a connection to the device is already closed should result in a no-op.

        If a connection to the device existed and it was open, the implementation is expected to generate a DeviceAgentEvent.Type.CHANNEL_CLOSED event.