- java.lang.Object
-
- org.xnio.AbstractConvertingIoFuture<T,D>
-
- Type Parameters:
T- the type of this future resultD- the type of the delegate result
- All Implemented Interfaces:
Cancellable,IoFuture<T>
public abstract class AbstractConvertingIoFuture<T,D> extends java.lang.Object implements IoFuture<T>
AnIoFutureimplementation that wraps a different type ofIoFuture. Used to create general wrappers that convert one channel type to another.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.xnio.IoFuture
IoFuture.HandlingNotifier<T,A>, IoFuture.Notifier<T,A>, IoFuture.Status
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedAbstractConvertingIoFuture(IoFuture<? extends D> delegate)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description <A> IoFuture<T>addNotifier(IoFuture.Notifier<? super T,A> notifier, A attachment)Add a notifier to be called when this operation is complete.IoFuture.Statusawait()Wait for the operation to complete.IoFuture.Statusawait(long time, java.util.concurrent.TimeUnit timeUnit)Wait for the operation to complete, with a timeout.IoFuture.StatusawaitInterruptibly()Wait for the operation to complete.IoFuture.StatusawaitInterruptibly(long time, java.util.concurrent.TimeUnit timeUnit)Wait for the operation to complete, with a timeout.IoFuture<T>cancel()Cancel an operation.protected abstract Tconvert(D arg)Tget()Get the result of the operation.protected IoFuture<? extends D>getDelegate()java.io.IOExceptiongetException()Get the failure reason.TgetInterruptibly()Get the result of the operation.IoFuture.StatusgetStatus()Get the current status.
-
-
-
Method Detail
-
cancel
public IoFuture<T> cancel()
Description copied from interface:IoFutureCancel an operation. The actual cancel may be synchronous or asynchronous.- Specified by:
cancelin interfaceCancellable- Specified by:
cancelin interfaceIoFuture<T>- Returns:
- this instance
-
getStatus
public IoFuture.Status getStatus()
Description copied from interface:IoFutureGet the current status.
-
await
public IoFuture.Status await()
Description copied from interface:IoFutureWait for the operation to complete. This method will block until the status changes fromIoFuture.Status.WAITING.
-
await
public IoFuture.Status await(long time, java.util.concurrent.TimeUnit timeUnit)
Description copied from interface:IoFutureWait for the operation to complete, with a timeout. This method will block until the status changes fromIoFuture.Status.WAITING, or the given time elapses. If the time elapses before the operation is complete,IoFuture.Status.WAITINGis returned.- Specified by:
awaitin interfaceIoFuture<T>- Parameters:
time- the amount of time to waittimeUnit- the time unit- Returns:
- the new status, or
IoFuture.Status.WAITINGif the timeout expired
-
awaitInterruptibly
public IoFuture.Status awaitInterruptibly() throws java.lang.InterruptedException
Description copied from interface:IoFutureWait for the operation to complete. This method will block until the status changes fromIoFuture.Status.WAITING, or the current thread is interrupted.- Specified by:
awaitInterruptiblyin interfaceIoFuture<T>- Returns:
- the new status
- Throws:
java.lang.InterruptedException- if the operation is interrupted
-
awaitInterruptibly
public IoFuture.Status awaitInterruptibly(long time, java.util.concurrent.TimeUnit timeUnit) throws java.lang.InterruptedException
Description copied from interface:IoFutureWait for the operation to complete, with a timeout. This method will block until the status changes fromIoFuture.Status.WAITING, the given time elapses, or the current thread is interrupted. If the time elapses before the operation is complete,IoFuture.Status.WAITINGis returned.- Specified by:
awaitInterruptiblyin interfaceIoFuture<T>- Parameters:
time- the amount of time to waittimeUnit- the time unit- Returns:
- the new status, or
IoFuture.Status.WAITINGif the timeout expired - Throws:
java.lang.InterruptedException- if the operation is interrupted
-
getException
public java.io.IOException getException() throws java.lang.IllegalStateExceptionDescription copied from interface:IoFutureGet the failure reason.- Specified by:
getExceptionin interfaceIoFuture<T>- Returns:
- the failure reason
- Throws:
java.lang.IllegalStateException- if the operation did not fail
-
get
public T get() throws java.io.IOException
Description copied from interface:IoFutureGet the result of the operation. If the operation is not complete, blocks until the operation completes. If the operation fails, or has already failed at the time this method is called, the failure reason is thrown.
-
getInterruptibly
public T getInterruptibly() throws java.io.IOException, java.lang.InterruptedException
Description copied from interface:IoFutureGet the result of the operation. If the operation is not complete, blocks until the operation completes. If the operation fails, or has already failed at the time this method is called, the failure reason is thrown. If the current thread is interrupted while waiting, an exception is thrown.- Specified by:
getInterruptiblyin interfaceIoFuture<T>- Returns:
- the result of the operation
- Throws:
java.io.IOException- if the operation failedjava.lang.InterruptedException- if the operation is interrupted
-
addNotifier
public <A> IoFuture<T> addNotifier(IoFuture.Notifier<? super T,A> notifier, A attachment)
Description copied from interface:IoFutureAdd a notifier to be called when this operation is complete. If the operation is already complete, the notifier is called immediately, possibly in the caller's thread. The given attachment is provided to the notifier.- Specified by:
addNotifierin interfaceIoFuture<T>- Type Parameters:
A- the attachment type- Parameters:
notifier- the notifier to be calledattachment- the attachment to pass in to the notifier- Returns:
- this instance
-
-