Class AbstractCloseable
- java.lang.Object
-
- org.apache.sshd.common.util.logging.AbstractLoggingBean
-
- org.apache.sshd.common.util.closeable.IoBaseCloseable
-
- org.apache.sshd.common.util.closeable.AbstractCloseable
-
- All Implemented Interfaces:
Closeable,AutoCloseable,Channel,Closeable
- Direct Known Subclasses:
AbstractInnerCloseable,SshThreadPoolExecutor.DelegateCloseable
public abstract class AbstractCloseable extends IoBaseCloseable
Provides some default implementations for managing channel/connection open/close state- Author:
- Apache MINA SSHD Project
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classAbstractCloseable.State
-
Field Summary
Fields Modifier and Type Field Description protected CloseFuturecloseFutureA future that will be set 'closed' when the object is actually closedprotected ObjectfutureLockLock object forFuture-s based on this closeable instanceprotected AtomicReference<AbstractCloseable.State>stateState of this object-
Fields inherited from class org.apache.sshd.common.util.logging.AbstractLoggingBean
log
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedAbstractCloseable()protectedAbstractCloseable(String discriminator)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddCloseFutureListener(SshFutureListener<CloseFuture> listener)Pre-register a listener to be informed when resource is closed.protected Builderbuilder()CloseFutureclose(boolean immediately)Close this resource asynchronously and return a future.protected CloseFuturedoCloseGracefully()protected voiddoCloseImmediately()doCloseImmediately is called once and only once with state == ImmediateObjectgetFutureLock()booleanisClosed()Returnstrueif this object has been closed.booleanisClosing()Returnstrueif theCloseable.close(boolean)method has been called.protected voidpreClose()preClose is guaranteed to be called before doCloseGracefully or doCloseImmediately.voidremoveCloseFutureListener(SshFutureListener<CloseFuture> listener)Remove a pre-registered close event listener-
Methods inherited from class org.apache.sshd.common.util.logging.AbstractLoggingBean
debug, debug, debug, debug, debug, error, error, error, error, error, getSimplifiedLogger, info, info, warn, warn, warn, warn, warn, warn, warn, warn
-
-
-
-
Field Detail
-
futureLock
protected final Object futureLock
Lock object forFuture-s based on this closeable instance
-
state
protected final AtomicReference<AbstractCloseable.State> state
State of this object
-
closeFuture
protected final CloseFuture closeFuture
A future that will be set 'closed' when the object is actually closed
-
-
Constructor Detail
-
AbstractCloseable
protected AbstractCloseable()
-
AbstractCloseable
protected AbstractCloseable(String discriminator)
-
-
Method Detail
-
getFutureLock
public Object getFutureLock()
-
addCloseFutureListener
public void addCloseFutureListener(SshFutureListener<CloseFuture> listener)
Description copied from interface:CloseablePre-register a listener to be informed when resource is closed. If resource is already closed, the listener will be invoked immediately and not registered for future notification- Parameters:
listener- The notificationSshFutureListener- nevernull
-
removeCloseFutureListener
public void removeCloseFutureListener(SshFutureListener<CloseFuture> listener)
Description copied from interface:CloseableRemove a pre-registered close event listener- Parameters:
listener- The registerSshFutureListener- nevernull. Ignored if not registered or resource already closed
-
close
public final CloseFuture close(boolean immediately)
Description copied from interface:CloseableClose this resource asynchronously and return a future. Resources support two closing modes: a graceful mode which will cleanly close the resource and an immediate mode which will close the resources abruptly.- Parameters:
immediately-trueif the resource should be shut down abruptly,falsefor a graceful close- Returns:
- a
CloseFuturerepresenting the close request
-
isClosed
public final boolean isClosed()
Description copied from interface:CloseableReturnstrueif this object has been closed.- Returns:
trueif closing
-
isClosing
public final boolean isClosing()
Description copied from interface:CloseableReturnstrueif theCloseable.close(boolean)method has been called. Note that this method will returntrueeven if thisCloseable.isClosed()returnstrue.- Returns:
trueif closing
-
preClose
protected void preClose()
preClose is guaranteed to be called before doCloseGracefully or doCloseImmediately. When preClose() is called, isClosing() == true
-
doCloseGracefully
protected CloseFuture doCloseGracefully()
-
doCloseImmediately
protected void doCloseImmediately()
doCloseImmediately is called once and only once with state == Immediate
Overriding methods should always call the base implementation. It may be called concurrently while preClose() or doCloseGracefully is executing
-
builder
protected Builder builder()
-
-