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

com.arm.mbed.cloud.sdk.subscribe.NotificationCallback Maven / Gradle / Ivy

package com.arm.mbed.cloud.sdk.subscribe;

import com.arm.mbed.cloud.sdk.annotations.Preamble;
import com.arm.mbed.cloud.sdk.common.Callback;

@Preamble(description = "Notification callback")
public class NotificationCallback {
    private final Callback onSuccess;
    private final Callback onFailure;

    /**
     * Constructor.
     *
     * @param onSuccess
     *            callback when success.
     * @param onFailure
     *            callback when failure.
     */
    public NotificationCallback(Callback onSuccess, Callback onFailure) {
        super();
        this.onSuccess = onSuccess;
        this.onFailure = onFailure;
    }

    /**
     * Calls back when a notification message is received.
     *
     * @param message
     *            message triggering the callback.
     */
    public void callBack(NotificationMessage message) {
        if (message == null) {
            return;
        }
        callBack(message.getValue(), message.getException());
    }

    /**
     * Calls back when a notification message is received.
     *
     * @param value
     *            message payload.
     * @param throwable
     *            exception.
     */
    public void callBack(T value, Throwable throwable) {
        if (throwable == null) {
            if (onSuccess != null) {
                onSuccess.execute(value);
            }
        } else {
            if (onFailure != null) {
                onFailure.execute(throwable);
            }
        }
    }

    /**
     * Calls back when a notification message is received.
     *
     * @param value
     *            message payload.
     */
    public void callBack(T value) {
        callBack(value, null);
    }

    /**
     * Calls back when an exception is received.
     *
     * @param throwable
     *            exception received.
     */
    public void callBack(Throwable throwable) {
        callBack(null, throwable);
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy