/* * Copyright (C) 2011 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.jboss.errai.common.client.api.tasks; /** * A handle representing an asynchronous task that has been submitted to the message bus. */ public interface AsyncTask { /** * Prevents this task from being scheduled again, optionally interrupting the * task if it is currently running. * * @param interrupt * if true, and this task is presently being executed, * {@link Thread#interrupt()} will be called on the thread currently * executing this task. */ public void cancel(boolean interrupt); /** * Sets the task that should be run after all executions of this task have * completed. The supplied runnable is guaranteed to be invoked exactly once, * even if this task has already completed or it has been cancelled. * * @param runnable * the logic to execute when this task has completed all of its * executions, either because it completed normally, by throwing an * exception, or because it was cancelled by a call to * {@link #cancel(boolean)}. */ public void setExitHandler(Runnable runnable); /** * Returns true if {@link #cancel(boolean)} has been called on this task, * whether it was called from user code or from within the framework because * the task threw an exception. * * @return true if this task has been cancelled; false otherwise. */ public boolean isCancelled(); /** * Returns true if this task is no longer scheduled to run, either because it executed * (successfully or with an error) or {@link #cancel(boolean)} was called. * * @return true if this task is no longer scheduled to run. */ public boolean isFinished(); }