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:
java.io.Closeable
,java.lang.AutoCloseable
,java.nio.channels.Channel
,Closeable
- Direct Known Subclasses:
AbstractInnerCloseable
,AbstractIoServiceFactory
,ChannelAsyncInputStream
,ChannelAsyncOutputStream
,ClientUserAuthService
,DefaultAgentForwardSupport
,Nio2Session
,ServerUserAuthService
,SimpleIoOutputStream
,SocksProxy
,SshThreadPoolExecutor.DelegateCloseable
public abstract class AbstractCloseable extends IoBaseCloseable
Provides some default implementations for managing channel/connection open/close state
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
AbstractCloseable.State
-
Field Summary
Fields Modifier and Type Field Description protected CloseFuture
closeFuture
A future that will be set 'closed' when the object is actually closedprotected java.lang.Object
futureLock
Lock object forFuture
-s based on this closeable instanceprotected java.util.concurrent.atomic.AtomicReference<AbstractCloseable.State>
state
State of this object-
Fields inherited from class org.apache.sshd.common.util.logging.AbstractLoggingBean
log
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractCloseable()
protected
AbstractCloseable(java.lang.String discriminator)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addCloseFutureListener(SshFutureListener<CloseFuture> listener)
Pre-register a listener to be informed when resource is closed.protected Builder
builder()
CloseFuture
close(boolean immediately)
Close this resource asynchronously and return a future.protected CloseFuture
doCloseGracefully()
protected void
doCloseImmediately()
doCloseImmediately is called once and only once with state == Immediatejava.lang.Object
getFutureLock()
boolean
isClosed()
Returnstrue
if this object has been closed.boolean
isClosing()
Returnstrue
if theCloseable.close(boolean)
method has been called.protected void
preClose()
preClose is guaranteed to be called before doCloseGracefully or doCloseImmediately.void
removeCloseFutureListener(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 java.lang.Object futureLock
Lock object forFuture
-s based on this closeable instance
-
state
protected final java.util.concurrent.atomic.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
-
-
Method Detail
-
getFutureLock
public java.lang.Object getFutureLock()
-
addCloseFutureListener
public void addCloseFutureListener(SshFutureListener<CloseFuture> listener)
Description copied from interface:Closeable
Pre-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:Closeable
Remove 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:Closeable
Close 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
-true
if the resource should be shut down abruptly,false
for a graceful close- Returns:
- a
CloseFuture
representing the close request
-
isClosed
public final boolean isClosed()
Description copied from interface:Closeable
Returnstrue
if this object has been closed.- Returns:
true
if closing
-
isClosing
public final boolean isClosing()
Description copied from interface:Closeable
Returnstrue
if theCloseable.close(boolean)
method has been called. Note that this method will returntrue
even if thisCloseable.isClosed()
returnstrue
.- Returns:
true
if 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()
-
-