package hudson.model.queue; import hudson.model.Queue.Executable; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; /** * {@link Future} that can be used to wait for the start and the end of the task execution * (such as a build.) * * <p> * For a historical reason, this object itself extends from {@link Future} to signal the * end of the task execution, and {@link #getStartCondition()} returns a separate * {@link Future} object that waits for the start of the task. * * @author Kohsuke Kawaguchi * @since 1.469 */ public interface QueueTaskFuture<R extends Executable> extends Future<R> { /** * Returns a {@link Future} object that can be used to wait for the start of the task execution. * * @return * never return null. */ Future<R> getStartCondition(); /** * Short for {@code getStartCondition().get()} */ R waitForStart() throws InterruptedException, ExecutionException; }