Class MqttClientConnection

  • All Implemented Interfaces:
    AutoCloseable

    public class MqttClientConnection
    extends CrtResource
    This class wraps aws-c-mqtt to provide the basic MQTT pub/sub functionality via the AWS Common Runtime MqttClientConnection represents a single connection from one MqttClient to an MQTT service endpoint
    • Constructor Detail

      • MqttClientConnection

        public MqttClientConnection​(MqttConnectionConfig config)
                             throws MqttException
        Constructs a new MqttClientConnection. Connections are reusable after being disconnected.
        Parameters:
        config - Configuration to use
        Throws:
        MqttException - If mqttClient is null
    • Method Detail

      • releaseNativeHandle

        protected void releaseNativeHandle()
        Frees native resources associated with this connection.
        Specified by:
        releaseNativeHandle in class CrtResource
      • canReleaseReferencesImmediately

        protected boolean canReleaseReferencesImmediately()
        Determines whether a resource releases its dependencies at the same time the native handle is released or if it waits. Resources that wait are responsible for calling releaseReferences() manually.
        Specified by:
        canReleaseReferencesImmediately in class CrtResource
        Returns:
        true if this resource releases synchronously, false if this resource performs async shutdown
      • connect

        public CompletableFuture<Boolean> connect()
                                           throws MqttException
        Connect to the service endpoint and start a session
        Returns:
        Future result is true if resuming a session, false if clean session
        Throws:
        MqttException - If the port is out of range
      • disconnect

        public CompletableFuture<Void> disconnect()
        Disconnects the current session
        Returns:
        When this future completes, the disconnection is complete
      • subscribe

        public CompletableFuture<Integer> subscribe​(String topic,
                                                    QualityOfService qos,
                                                    java.util.function.Consumer<MqttMessage> handler)
        Subscribes to a topic
        Parameters:
        topic - The topic to subscribe to
        qos - QualityOfService for this subscription
        handler - A handler which can receive an MqttMessage when a message is published to the topic
        Returns:
        Future result is the packet/message id associated with the subscribe operation
      • subscribe

        public CompletableFuture<Integer> subscribe​(String topic,
                                                    QualityOfService qos)
        Subscribes to a topic without a handler (messages will only be delivered to the OnMessage handler)
        Parameters:
        topic - The topic to subscribe to
        qos - QualityOfService for this subscription
        Returns:
        Future result is the packet/message id associated with the subscribe operation
      • onMessage

        public void onMessage​(java.util.function.Consumer<MqttMessage> handler)
        Sets a handler to be invoked whenever a message arrives, subscription or not
        Parameters:
        handler - A handler which can receive any MqttMessage
      • unsubscribe

        public CompletableFuture<Integer> unsubscribe​(String topic)
        Unsubscribes from a topic
        Parameters:
        topic - The topic to unsubscribe from
        Returns:
        Future result is the packet/message id associated with the unsubscribe operation
      • publish

        public CompletableFuture<Integer> publish​(MqttMessage message)
        Publishes a message to a topic.
        Parameters:
        message - The message to publish.
        Returns:
        Future value is the packet/message id associated with the publish operation