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
,AbstractIoServiceFactory
,ChannelAsyncInputStream
,ChannelAsyncOutputStream
,ClientUserAuthService
,DefaultAgentForwardSupport
,Nio2Session
,ServerUserAuthService
,SimpleIoOutputStream
,SocksProxy
,SshThreadPoolExecutor.DelegateCloseable
Provides some default implementations for managing channel/connection open/close state
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final CloseFuture
A future that will be set 'closed' when the object is actually closedprotected final Object
Lock object forFuture
-s based on this closeable instanceprotected final AtomicReference
<AbstractCloseable.State> State of this objectFields inherited from class org.apache.sshd.common.util.logging.AbstractLoggingBean
log
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
addCloseFutureListener
(SshFutureListener<CloseFuture> listener) Pre-register a listener to be informed when resource is closed.protected Builder
builder()
final CloseFuture
close
(boolean immediately) Close this resource asynchronously and return a future.protected CloseFuture
protected void
doCloseImmediately is called once and only once with state == Immediatefinal boolean
isClosed()
Returnstrue
if this object has been closed.final boolean
Returnstrue
if theCloseable.close(boolean)
method has been called.protected void
preClose()
preClose is guaranteed to be called before doCloseGracefully or doCloseImmediately.void
Remove a pre-registered close event listenerMethods 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 Details
-
futureLock
Lock object forFuture
-s based on this closeable instance -
state
State of this object -
closeFuture
A future that will be set 'closed' when the object is actually closed
-
-
Constructor Details
-
AbstractCloseable
protected AbstractCloseable() -
AbstractCloseable
-
-
Method Details
-
getFutureLock
-
addCloseFutureListener
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
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
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
-
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
-