Package org.jboss.netty.channel
Class DefaultChannelFuture
- java.lang.Object
-
- org.jboss.netty.channel.DefaultChannelFuture
-
- All Implemented Interfaces:
ChannelFuture
- Direct Known Subclasses:
AbstractChannel.ChannelCloseFuture,ChannelRunnableWrapper,SslHandler.SSLEngineInboundCloseFuture
public class DefaultChannelFuture extends java.lang.Object implements ChannelFuture
The defaultChannelFutureimplementation. It is recommended to useChannels.future(Channel)andChannels.future(Channel, boolean)to create a newChannelFuturerather than calling the constructor explicitly.
-
-
Field Summary
Fields Modifier and Type Field Description private booleancancellableprivate static java.lang.ThrowableCANCELLEDprivate java.lang.Throwablecauseprivate Channelchannelprivate static booleandisabledDeadLockCheckerOnceprivate booleandoneprivate ChannelFutureListenerfirstListenerprivate static InternalLoggerloggerprivate java.util.List<ChannelFutureListener>otherListenersprivate java.util.List<ChannelFutureProgressListener>progressListenersprivate static booleanuseDeadLockCheckerprivate intwaiters
-
Constructor Summary
Constructors Constructor Description DefaultChannelFuture(Channel channel, boolean cancellable)Creates a new instance.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddListener(ChannelFutureListener listener)Adds the specified listener to this future.ChannelFutureawait()Waits for this future to be completed.booleanawait(long timeoutMillis)Waits for this future to be completed within the specified time limit.booleanawait(long timeout, java.util.concurrent.TimeUnit unit)Waits for this future to be completed within the specified time limit.private booleanawait0(long timeoutNanos, boolean interruptable)ChannelFutureawaitUninterruptibly()Waits for this future to be completed without interruption.booleanawaitUninterruptibly(long timeoutMillis)Waits for this future to be completed within the specified time limit without interruption.booleanawaitUninterruptibly(long timeout, java.util.concurrent.TimeUnit unit)Waits for this future to be completed within the specified time limit without interruption.booleancancel()Cancels the I/O operation associated with this future and notifies all listeners if canceled successfully.private static voidcheckDeadLock()java.lang.ThrowablegetCause()Returns the cause of the failed I/O operation if the I/O operation has failed.ChannelgetChannel()Returns a channel where the I/O operation associated with this future takes place.booleanisCancelled()Returnstrueif and only if this future was cancelled by aChannelFuture.cancel()method.booleanisDone()Returnstrueif and only if this future is complete, regardless of whether the operation was successful, failed, or cancelled.booleanisSuccess()Returnstrueif and only if the I/O operation was completed successfully.static booleanisUseDeadLockChecker()Returnstrueif and only if the dead lock checker is enabled.private voidnotifyListener(ChannelFutureListener l)private voidnotifyListeners()private voidnotifyProgressListener(ChannelFutureProgressListener l, long amount, long current, long total)voidremoveListener(ChannelFutureListener listener)Removes the specified listener from this future.private voidrethrowIfFailed0()booleansetFailure(java.lang.Throwable cause)Marks this future as a failure and notifies all listeners.booleansetProgress(long amount, long current, long total)Notifies the progress of the operation to the listeners that implementsChannelFutureProgressListener.booleansetSuccess()Marks this future as a success and notifies all listeners.static voidsetUseDeadLockChecker(boolean useDeadLockChecker)Enables or disables the dead lock checker.ChannelFuturesync()Waits for this future until it is done, and rethrows the cause of the failure if this future failed.ChannelFuturesyncUninterruptibly()Waits for this future until it is done, and rethrows the cause of the failure if this future failed.
-
-
-
Field Detail
-
logger
private static final InternalLogger logger
-
CANCELLED
private static final java.lang.Throwable CANCELLED
-
useDeadLockChecker
private static volatile boolean useDeadLockChecker
-
disabledDeadLockCheckerOnce
private static boolean disabledDeadLockCheckerOnce
-
channel
private final Channel channel
-
cancellable
private final boolean cancellable
-
firstListener
private ChannelFutureListener firstListener
-
otherListeners
private java.util.List<ChannelFutureListener> otherListeners
-
progressListeners
private java.util.List<ChannelFutureProgressListener> progressListeners
-
done
private boolean done
-
cause
private java.lang.Throwable cause
-
waiters
private int waiters
-
-
Method Detail
-
isUseDeadLockChecker
public static boolean isUseDeadLockChecker()
Returnstrueif and only if the dead lock checker is enabled.
-
setUseDeadLockChecker
public static void setUseDeadLockChecker(boolean useDeadLockChecker)
Enables or disables the dead lock checker. It is not recommended to disable the dead lock checker. Disable it at your own risk!
-
getChannel
public Channel getChannel()
Description copied from interface:ChannelFutureReturns a channel where the I/O operation associated with this future takes place.- Specified by:
getChannelin interfaceChannelFuture
-
isDone
public boolean isDone()
Description copied from interface:ChannelFutureReturnstrueif and only if this future is complete, regardless of whether the operation was successful, failed, or cancelled.- Specified by:
isDonein interfaceChannelFuture
-
isSuccess
public boolean isSuccess()
Description copied from interface:ChannelFutureReturnstrueif and only if the I/O operation was completed successfully.- Specified by:
isSuccessin interfaceChannelFuture
-
getCause
public java.lang.Throwable getCause()
Description copied from interface:ChannelFutureReturns the cause of the failed I/O operation if the I/O operation has failed.- Specified by:
getCausein interfaceChannelFuture- Returns:
- the cause of the failure.
nullif succeeded or this future is not completed yet.
-
isCancelled
public boolean isCancelled()
Description copied from interface:ChannelFutureReturnstrueif and only if this future was cancelled by aChannelFuture.cancel()method.- Specified by:
isCancelledin interfaceChannelFuture
-
addListener
public void addListener(ChannelFutureListener listener)
Description copied from interface:ChannelFutureAdds the specified listener to this future. The specified listener is notified when this future is done. If this future is already completed, the specified listener is notified immediately.- Specified by:
addListenerin interfaceChannelFuture
-
removeListener
public void removeListener(ChannelFutureListener listener)
Description copied from interface:ChannelFutureRemoves the specified listener from this future. The specified listener is no longer notified when this future is done. If the specified listener is not associated with this future, this method does nothing and returns silently.- Specified by:
removeListenerin interfaceChannelFuture
-
sync
public ChannelFuture sync() throws java.lang.InterruptedException
Description copied from interface:ChannelFutureWaits for this future until it is done, and rethrows the cause of the failure if this future failed. If the cause of the failure is a checked exception, it is wrapped with a newChannelExceptionbefore being thrown.- Specified by:
syncin interfaceChannelFuture- Throws:
java.lang.InterruptedException
-
syncUninterruptibly
public ChannelFuture syncUninterruptibly()
Description copied from interface:ChannelFutureWaits for this future until it is done, and rethrows the cause of the failure if this future failed. If the cause of the failure is a checked exception, it is wrapped with a newChannelExceptionbefore being thrown.- Specified by:
syncUninterruptiblyin interfaceChannelFuture
-
rethrowIfFailed0
private void rethrowIfFailed0()
-
await
public ChannelFuture await() throws java.lang.InterruptedException
Description copied from interface:ChannelFutureWaits for this future to be completed.- Specified by:
awaitin interfaceChannelFuture- Throws:
java.lang.InterruptedException- if the current thread was interrupted
-
await
public boolean await(long timeout, java.util.concurrent.TimeUnit unit) throws java.lang.InterruptedExceptionDescription copied from interface:ChannelFutureWaits for this future to be completed within the specified time limit.- Specified by:
awaitin interfaceChannelFuture- Returns:
trueif and only if the future was completed within the specified time limit- Throws:
java.lang.InterruptedException- if the current thread was interrupted
-
await
public boolean await(long timeoutMillis) throws java.lang.InterruptedExceptionDescription copied from interface:ChannelFutureWaits for this future to be completed within the specified time limit.- Specified by:
awaitin interfaceChannelFuture- Returns:
trueif and only if the future was completed within the specified time limit- Throws:
java.lang.InterruptedException- if the current thread was interrupted
-
awaitUninterruptibly
public ChannelFuture awaitUninterruptibly()
Description copied from interface:ChannelFutureWaits for this future to be completed without interruption. This method catches anInterruptedExceptionand discards it silently.- Specified by:
awaitUninterruptiblyin interfaceChannelFuture
-
awaitUninterruptibly
public boolean awaitUninterruptibly(long timeout, java.util.concurrent.TimeUnit unit)Description copied from interface:ChannelFutureWaits for this future to be completed within the specified time limit without interruption. This method catches anInterruptedExceptionand discards it silently.- Specified by:
awaitUninterruptiblyin interfaceChannelFuture- Returns:
trueif and only if the future was completed within the specified time limit
-
awaitUninterruptibly
public boolean awaitUninterruptibly(long timeoutMillis)
Description copied from interface:ChannelFutureWaits for this future to be completed within the specified time limit without interruption. This method catches anInterruptedExceptionand discards it silently.- Specified by:
awaitUninterruptiblyin interfaceChannelFuture- Returns:
trueif and only if the future was completed within the specified time limit
-
await0
private boolean await0(long timeoutNanos, boolean interruptable) throws java.lang.InterruptedException- Throws:
java.lang.InterruptedException
-
checkDeadLock
private static void checkDeadLock()
-
setSuccess
public boolean setSuccess()
Description copied from interface:ChannelFutureMarks this future as a success and notifies all listeners.- Specified by:
setSuccessin interfaceChannelFuture- Returns:
trueif and only if successfully marked this future as a success. Otherwisefalsebecause this future is already marked as either a success or a failure.
-
setFailure
public boolean setFailure(java.lang.Throwable cause)
Description copied from interface:ChannelFutureMarks this future as a failure and notifies all listeners.- Specified by:
setFailurein interfaceChannelFuture- Returns:
trueif and only if successfully marked this future as a failure. Otherwisefalsebecause this future is already marked as either a success or a failure.
-
cancel
public boolean cancel()
Description copied from interface:ChannelFutureCancels the I/O operation associated with this future and notifies all listeners if canceled successfully.- Specified by:
cancelin interfaceChannelFuture- Returns:
trueif and only if the operation has been canceled.falseif the operation can't be canceled or is already completed.
-
notifyListeners
private void notifyListeners()
-
notifyListener
private void notifyListener(ChannelFutureListener l)
-
setProgress
public boolean setProgress(long amount, long current, long total)Description copied from interface:ChannelFutureNotifies the progress of the operation to the listeners that implementsChannelFutureProgressListener. Please note that this method will not do anything and returnfalseif this future is complete already.- Specified by:
setProgressin interfaceChannelFuture- Returns:
trueif and only if notification was made.
-
notifyProgressListener
private void notifyProgressListener(ChannelFutureProgressListener l, long amount, long current, long total)
-
-