Class AbstractCloseable

    • Field Detail

      • futureLock

        protected final java.lang.Object futureLock
        Lock object for Future-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
    • Constructor Detail

      • AbstractCloseable

        protected AbstractCloseable()
      • AbstractCloseable

        protected AbstractCloseable​(java.lang.String discriminator)
    • 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 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()