package org.xnio;

import java.io.IOException;
import java.util.concurrent.CancellationException;
import java.util.concurrent.TimeUnit;

import static org.xnio.IoFuture.Status.DONE;

An implementation of IoFuture that represents an immediately-successful operation.
Type parameters:
  • <T> – the type of result that this operation produces
/** * An implementation of {@link IoFuture} that represents an immediately-successful operation. * * @param <T> the type of result that this operation produces */
public class FinishedIoFuture<T> implements IoFuture<T> { private final T result;
Create an instance.
Params:
  • result – the operation result
/** * Create an instance. * * @param result the operation result */
public FinishedIoFuture(T result) { this.result = result; }
Cancel the operation. Since this operation is always complete, this is a no-op.
Returns:this instance
/** * Cancel the operation. Since this operation is always complete, this is a no-op. * * @return this instance */
public IoFuture<T> cancel() { return this; } @Override public Status getStatus() { return DONE; } @Override public Status await() { return DONE; } @Override public Status await(final long time, final TimeUnit timeUnit) { return DONE; } @Override public Status awaitInterruptibly() throws InterruptedException { return DONE; } @Override public Status awaitInterruptibly(final long time, final TimeUnit timeUnit) throws InterruptedException { return DONE; } @Override public T get() throws IOException, CancellationException { return result; } @Override public T getInterruptibly() throws IOException, InterruptedException, CancellationException { return result; } @Override public IOException getException() throws IllegalStateException { throw new IllegalStateException(); } @Override public <A> IoFuture<T> addNotifier(final Notifier<? super T, A> notifier, final A attachment) { notifier.notify(this, attachment); return this; } }