/*
* Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com
* The software in this package is published under the terms of the CPAL v1.0
* license, a copy of which has been included with this distribution in the
* LICENSE.txt file.
*/
package org.mule.runtime.core.execution;
/**
* Handles the result of asynchronous processing.
*
* @param <R> The type of the processing response value
*
* @since 1.0
*/
public interface CompletionHandler<R, E extends Throwable> {
/**
* Invoked on successful completion of asynchronous processing.
* <p>
* Exceptions found while processing the {@code result} are to be notified through
* the {@code exceptionCallback}, which might (depending on {@code HandledCompletionExceptionResult})
* produce a new value as the result of handling such error
*
* @param result the result of processing
* @param exceptionCallback handles errors processing the {@code result}
*/
void onCompletion(R result, ExceptionCallback<Throwable> exceptionCallback);
/**
* Invoked when a failure occurs during asynchronous processing
*
* @param exception the exception thrown during processing
*/
void onFailure(E exception);
}