Package com.linecorp.armeria.common.util
Class AsyncCloseableSupport
java.lang.Object
com.linecorp.armeria.common.util.AsyncCloseableSupport
- All Implemented Interfaces:
AsyncCloseable
,ListenableAsyncCloseable
,AutoCloseable
Provides support for implementing
AsyncCloseable
or ListenableAsyncCloseable
.-
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
Releases any underlying resources held by this object synchronously.Releases any underlying resources held by this object asynchronously.static AsyncCloseableSupport
closed()
Returns theAsyncCloseableSupport
which has been closed already.boolean
isClosed()
Returns whetherAsyncCloseable.close()
orAsyncCloseable.closeAsync()
operation has been completed.boolean
Returns whetherAsyncCloseable.close()
orAsyncCloseable.closeAsync()
has been called.static AsyncCloseableSupport
of()
static AsyncCloseableSupport
of
(Consumer<CompletableFuture<?>> closeAction) Returns theCompletableFuture
which is completed after theAsyncCloseable.close()
orAsyncCloseable.closeAsync()
operation is completed.
-
Method Details
-
of
Returns a newAsyncCloseableSupport
that will be completed immediately onclose()
orcloseAsync()
. This method is useful when you don't have any resources to release.> public class MyClass implements ListenableAsyncCloseable { > final AsyncCloseableSupport closeable = AsyncCloseableSupport.of(); > > public void doSomething() { > if (closeable.isClosing()) { > throw new IllegalStateException("Closed already"); > } > ... > } > > @Override > public boolean isClosing() { return closeable.isClosing(); } > > @Override > public CompletableFuture<?> whenClosed() { return closeable.whenClosed(); } > > @Override > public CompletableFuture<?> closeAsync() { return closeable.closeAsync(); } > > @Override > public void close() { closeable.close(); } > }
-
of
Returns a newAsyncCloseableSupport
which calls the specifiedConsumer
onclose()
orcloseAsync()
.> class MyClass implements ListenableAsyncCloseable { > final AsyncCloseableSupport closeable = AsyncCloseableSupport.of(f -> { > // Release resources here. > ... > f.complete(null); > }); > > @Override > public boolean isClosing() { return closeable.isClosing(); } > > @Override > public CompletableFuture<?> whenClosed() { return closeable.whenClosed(); } > > @Override > public CompletableFuture<?> closeAsync() { return closeable.closeAsync(); } > > @Override > public void close() { closeable.close(); } > }
- Parameters:
closeAction
- theConsumer
which performs the task that release the resources and completes the givenCompletableFuture
.
-
closed
Returns theAsyncCloseableSupport
which has been closed already. -
isClosing
public boolean isClosing()Description copied from interface:ListenableAsyncCloseable
Returns whetherAsyncCloseable.close()
orAsyncCloseable.closeAsync()
has been called.- Specified by:
isClosing
in interfaceListenableAsyncCloseable
- See Also:
-
isClosed
public boolean isClosed()Description copied from interface:ListenableAsyncCloseable
Returns whetherAsyncCloseable.close()
orAsyncCloseable.closeAsync()
operation has been completed.- Specified by:
isClosed
in interfaceListenableAsyncCloseable
- See Also:
-
closeAsync
Description copied from interface:AsyncCloseable
Releases any underlying resources held by this object asynchronously.- Specified by:
closeAsync
in interfaceAsyncCloseable
- Returns:
- the
CompletableFuture
which is completed after the resources are released
-
close
public void close()Description copied from interface:AsyncCloseable
Releases any underlying resources held by this object synchronously.- Specified by:
close
in interfaceAsyncCloseable
- Specified by:
close
in interfaceAutoCloseable
-
whenClosed
Description copied from interface:ListenableAsyncCloseable
Returns theCompletableFuture
which is completed after theAsyncCloseable.close()
orAsyncCloseable.closeAsync()
operation is completed.- Specified by:
whenClosed
in interfaceListenableAsyncCloseable
-