Class AbstractCloseable

All Implemented Interfaces:
Closeable, AutoCloseable, 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
  • Field Details

    • futureLock

      protected final Object futureLock
      Lock object for Future-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 Details

    • AbstractCloseable

      protected AbstractCloseable()
    • AbstractCloseable

      protected AbstractCloseable(String discriminator)
  • Method Details

    • getFutureLock

      public 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 notification SshFutureListener - never null
    • removeCloseFutureListener

      public void removeCloseFutureListener(SshFutureListener<CloseFuture> listener)
      Description copied from interface: Closeable
      Remove a pre-registered close event listener
      Parameters:
      listener - The register SshFutureListener - never null. 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
      Returns true if this object has been closed.
      Returns:
      true if closing
    • isClosing

      public final boolean isClosing()
      Description copied from interface: Closeable
      Returns true if the Closeable.close(boolean) method has been called. Note that this method will return true even if this Closeable.isClosed() returns true.
      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()