Class AbstractMQTT_IOClient<S>

java.lang.Object
org.openremote.agent.protocol.mqtt.AbstractMQTT_IOClient<S>
All Implemented Interfaces:
IOClient<MQTTMessage<S>>
Direct Known Subclasses:
MQTT_IOClient

public abstract class AbstractMQTT_IOClient<S> extends Object implements IOClient<MQTTMessage<S>>
  • Field Details

    • LOG

      public static final Logger LOG
    • clientId

      protected String clientId
    • host

      protected String host
    • port

      protected int port
    • secure

      protected boolean secure
    • cleanSession

      protected boolean cleanSession
    • usernamePassword

      protected org.openremote.model.auth.UsernamePassword usernamePassword
    • websocketURI

      protected URI websocketURI
    • client

      protected com.hivemq.client.mqtt.mqtt3.Mqtt3AsyncClient client
    • connectionStatusConsumers

      protected final Set<Consumer<org.openremote.model.asset.agent.ConnectionStatus>> connectionStatusConsumers
    • topicConsumerMap

      protected final ConcurrentMap<String,Set<Consumer<MQTTMessage<S>>>> topicConsumerMap
    • executorService

      protected ScheduledExecutorService executorService
    • disconnected

      protected boolean disconnected
    • connected

      protected final AtomicBoolean connected
    • topicSubscribeFailureConsumer

      protected Consumer<String> topicSubscribeFailureConsumer
  • Constructor Details

    • AbstractMQTT_IOClient

      protected AbstractMQTT_IOClient(String host, int port, boolean secure, boolean cleanSession, org.openremote.model.auth.UsernamePassword usernamePassword, URI websocketURI, MQTTLastWill lastWill, KeyManagerFactory keyManagerFactory, TrustManagerFactory trustManagerFactory)
    • AbstractMQTT_IOClient

      protected AbstractMQTT_IOClient(String clientId, String host, int port, boolean secure, boolean cleanSession, org.openremote.model.auth.UsernamePassword usernamePassword, URI websocketURI, MQTTLastWill lastWill, KeyManagerFactory keyManagerFactory, TrustManagerFactory trustManagerFactory)
  • Method Details

    • sendMessage

      public void sendMessage(MQTTMessage<S> message)
      Description copied from interface: IOClient
      Send a message over the wire
      Specified by:
      sendMessage in interface IOClient<S>
    • addMessageConsumer

      public void addMessageConsumer(Consumer<MQTTMessage<S>> messageConsumer)
      Description copied from interface: IOClient
      Add a consumer of received messages
      Specified by:
      addMessageConsumer in interface IOClient<S>
    • addMessageConsumer

      public boolean addMessageConsumer(String topic, Consumer<MQTTMessage<S>> messageConsumer)
    • setTopicSubscribeFailureConsumer

      public void setTopicSubscribeFailureConsumer(Consumer<String> topicSubscribeFailureConsumer)
    • onSubscribeFailed

      protected void onSubscribeFailed(String topic)
    • doClientSubscription

      protected boolean doClientSubscription(String topic, Set<Consumer<MQTTMessage<S>>> consumers)
    • removeMessageConsumer

      public void removeMessageConsumer(Consumer<MQTTMessage<S>> messageConsumer)
      Description copied from interface: IOClient
      Remove a consumer of received messages
      Specified by:
      removeMessageConsumer in interface IOClient<S>
    • removeMessageConsumer

      public void removeMessageConsumer(String topic, Consumer<MQTTMessage<S>> messageConsumer)
    • removeAllMessageConsumers

      public void removeAllMessageConsumers()
      Description copied from interface: IOClient
      Remove every consumer of received messages
      Specified by:
      removeAllMessageConsumers in interface IOClient<S>
    • removeSubscription

      protected void removeSubscription(String topic)
    • addConnectionStatusConsumer

      public void addConnectionStatusConsumer(Consumer<org.openremote.model.asset.agent.ConnectionStatus> connectionStatusConsumer)
      Description copied from interface: IOClient
      Add a consumer of connection status
      Specified by:
      addConnectionStatusConsumer in interface IOClient<S>
    • removeConnectionStatusConsumer

      public void removeConnectionStatusConsumer(Consumer<org.openremote.model.asset.agent.ConnectionStatus> connectionStatusConsumer)
      Description copied from interface: IOClient
      Remove a consumer of connection status
      Specified by:
      removeConnectionStatusConsumer in interface IOClient<S>
    • removeAllConnectionStatusConsumers

      public void removeAllConnectionStatusConsumers()
      Description copied from interface: IOClient
      Remove every consumer of connection status
      Specified by:
      removeAllConnectionStatusConsumers in interface IOClient<S>
    • getConnectionStatus

      public org.openremote.model.asset.agent.ConnectionStatus getConnectionStatus()
      Description copied from interface: IOClient
      Get current connection status
      Specified by:
      getConnectionStatus in interface IOClient<S>
    • connect

      public void connect()
      Description copied from interface: IOClient
      Connect to the device
      Specified by:
      connect in interface IOClient<S>
    • onConnectionStatusChanged

      protected void onConnectionStatusChanged()
    • disconnect

      public void disconnect()
      Description copied from interface: IOClient
      Disconnect from the device
      Specified by:
      disconnect in interface IOClient<S>
    • getClientUri

      public String getClientUri()
      Description copied from interface: IOClient
      Should return a URI that uniquely identifies this client instance
      Specified by:
      getClientUri in interface IOClient<S>
    • messageToBytes

      public abstract byte[] messageToBytes(S message)
    • messageFromBytes

      public abstract S messageFromBytes(byte[] bytes)