Package io.servicetalk.concurrent.api
Class AsyncCloseables
java.lang.Object
io.servicetalk.concurrent.api.AsyncCloseables
A utility class to create
AsyncCloseables.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceA resource that can be converted to anAsyncCloseable. -
Method Summary
Modifier and TypeMethodDescriptionstatic CompletablecloseAsyncGracefully(AsyncCloseable closable, long timeout, TimeUnit timeoutUnit) InvokesAsyncCloseable.closeAsyncGracefully()on theclosable, applies a timeout, and if the timeout fires forces a call toAsyncCloseable.closeAsync().static ListenableAsyncCloseableCreates an emptyListenableAsyncCloseablethat does nothing whenAsyncCloseable.closeAsync()apart from completing theListenableAsyncCloseable.onClose().static CompositeCloseableCreates a newCompositeCloseable.static ListenableAsyncCloseabletoAsyncCloseable(AsyncCloseables.CloseableResource closeableResource) Creates a newListenableAsyncCloseablewhich uses the passedSupplierto get the implementation of close.static ListenableAsyncCloseabletoListenableAsyncCloseable(AsyncCloseable asyncCloseable) Wraps the passedAsyncCloseableand creates a newListenableAsyncCloseable.static ListenableAsyncCloseabletoListenableAsyncCloseable(AsyncCloseable asyncCloseable, Function<Completable, Completable> onCloseDecorator) Wraps the passedAsyncCloseableand creates a newListenableAsyncCloseable.
-
Method Details
-
closeAsyncGracefully
public static Completable closeAsyncGracefully(AsyncCloseable closable, long timeout, TimeUnit timeoutUnit) InvokesAsyncCloseable.closeAsyncGracefully()on theclosable, applies a timeout, and if the timeout fires forces a call toAsyncCloseable.closeAsync().- Parameters:
closable- TheAsyncCloseableto initiateAsyncCloseable.closeAsyncGracefully()on.timeout- The timeout duration to wait forAsyncCloseable.closeAsyncGracefully()to complete.timeoutUnit- The time unit applied totimeout.- Returns:
- A
Completablethat is notified once the close is complete.
-
emptyAsyncCloseable
Creates an emptyListenableAsyncCloseablethat does nothing whenAsyncCloseable.closeAsync()apart from completing theListenableAsyncCloseable.onClose().- Returns:
- A new
ListenableAsyncCloseable.
-
toListenableAsyncCloseable
Wraps the passedAsyncCloseableand creates a newListenableAsyncCloseable. This method owns the passedAsyncCloseableafter this method returns and hence it should not be used by the caller after this method returns.- Parameters:
asyncCloseable-AsyncCloseableto convert toListenableAsyncCloseable.- Returns:
- A new
ListenableAsyncCloseable.
-
toListenableAsyncCloseable
public static ListenableAsyncCloseable toListenableAsyncCloseable(AsyncCloseable asyncCloseable, Function<Completable, Completable> onCloseDecorator) Wraps the passedAsyncCloseableand creates a newListenableAsyncCloseable. This method owns the passedAsyncCloseableafter this method returns and hence it should not be used by the caller after this method returns.- Parameters:
asyncCloseable-AsyncCloseableto convert toListenableAsyncCloseable.onCloseDecorator-Functionthat can decorate theCompletablereturned from the returnedListenableAsyncCloseable.onClose().- Returns:
- A new
ListenableAsyncCloseable.
-
toAsyncCloseable
public static ListenableAsyncCloseable toAsyncCloseable(AsyncCloseables.CloseableResource closeableResource) Creates a newListenableAsyncCloseablewhich uses the passedSupplierto get the implementation of close.- Parameters:
closeableResource-AsyncCloseables.CloseableResourcethat is to be wrapped into aListenableAsyncCloseable.AsyncCloseables.CloseableResource.doClose(boolean)will be called when the returnedListenableAsyncCloseableisclosedorgracefully closedfor the first time.- Returns:
- A new
ListenableAsyncCloseable.
-
newCompositeCloseable
Creates a newCompositeCloseable.- Returns:
- A new
CompositeCloseable.
-