All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.eclipse.paho.client.mqttv3.IMqttToken Maven / Gradle / Ivy

/*
 * Copyright (c) 2009, 2012 IBM Corp.
 *
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Dave Locke - initial API and implementation and/or initial documentation
 *    Ian Craggs - MQTT 3.1.1 support
 */
package org.eclipse.paho.client.mqttv3;

import org.eclipse.paho.client.mqttv3.internal.wire.MqttWireMessage;

/**
 * Provides a mechanism for tracking the completion of an asynchronous task.
 *
 * 

When using the asynchronous/non-blocking MQTT programming interface all * methods/operations that take any time (and in particular those that involve * any network operation) return control to the caller immediately. The operation * then proceeds to run in the background so as not to block the invoking thread. * An IMqttToken is used to track the state of the operation. An application can use the * token to wait for an operation to complete. A token is passed to callbacks * once the operation completes and provides context linking it to the original * request. A token is associated with a single operation.

*

* An action is in progress until either: *

    *
  • isComplete() returns true or *
  • getException() is not null. *
*

* */ public interface IMqttToken { /** * Blocks the current thread until the action this token is associated with has * completed. * * @throws MqttException if there was a problem with the action associated with the token. * @see #waitForCompletion(long) */ public void waitForCompletion() throws MqttException; /** * Blocks the current thread until the action this token is associated with has * completed. *

The timeout specifies the maximum time it will block for. If the action * completes before the timeout then control returns immediately, if not * it will block until the timeout expires.

*

If the action being tracked fails or the timeout expires an exception will * be thrown. In the event of a timeout the action may complete after timeout. *

* * @param timeout the maximum amount of time to wait for, in milliseconds. * @throws MqttException if there was a problem with the action associated with the token. */ public void waitForCompletion(long timeout) throws MqttException; /** * Returns whether or not the action has finished. *

True will be returned both in the case where the action finished successfully * and in the case where it failed. If the action failed {@link #getException()} will * be non null. *

*/ public boolean isComplete(); /** * Returns an exception providing more detail if an operation failed. *

While an action in in progress and when an action completes successfully * null will be returned. Certain errors like timeout or shutting down will not * set the exception as the action has not failed or completed at that time *

* @return exception may return an exception if the operation failed. Null will be * returned while action is in progress and if action completes successfully. */ public MqttException getException(); /** * Register a listener to be notified when an action completes. *

Once a listener is registered it will be invoked when the action the token * is associated with either succeeds or fails. *

* @param listener to be invoked once the action completes */ public void setActionCallback(IMqttActionListener listener); /** * Return the async listener for this token. * @return listener that is set on the token or null if a listener is not registered. */ public IMqttActionListener getActionCallback(); /** * Returns the MQTT client that is responsible for processing the asynchronous * action */ public IMqttAsyncClient getClient(); /** * Returns the topic string(s) for the action being tracked by this * token. If the action has not been initiated or the action has not * topic associated with it such as connect then null will be returned. * * @return the topic string(s) for the subscribe being tracked by this token or null */ public String[] getTopics(); /** * Store some context associated with an action. *

Allows the caller of an action to store some context that can be * accessed from within the ActionListener associated with the action. This * can be useful when the same ActionListener is associated with multiple * actions

* @param userContext to associate with an action */ public void setUserContext(Object userContext); /** * Retrieve the context associated with an action. *

Allows the ActionListener associated with an action to retrieve any context * that was associated with the action when the action was invoked. If not * context was provided null is returned.

* @return Object context associated with an action or null if there is none. */ public Object getUserContext(); /** * Returns the message ID of the message that is associated with the token. * A message id of zero will be returned for tokens associated with * connect, disconnect and ping operations as there can only ever * be one of these outstanding at a time. For other operations * the MQTT message id flowed over the network. */ public int getMessageId(); /** * Returns the granted QoS list from a suback */ public int[] getGrantedQos(); /** * Returns the session present flag from a connack */ public boolean getSessionPresent(); /** * Returns the response wire message */ public MqttWireMessage getResponse(); }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy