CallbackToFutureAdapter
public
final
class
CallbackToFutureAdapter
extends Object
java.lang.Object | |
↳ | androidx.concurrent.futures.CallbackToFutureAdapter |
A utility useful for adapting interfaces that take callbacks into interfaces that return ListenableFuture
.
It also provides additional safety checks, failing the future if it will never complete.
For example, you work with the following async api:
class AsyncApi { interface OnResult { void onSuccess(Foo foo); void onError(Failure failure); } void load(OnResult onResult) {} }
Code that wraps it as ListenableFuture
would look like:
ListenableFuture<Foo> asyncOperation() { return CallbackToFutureAdapter.getFuture(completer -> { asyncApi.load(new OnResult() { @Override public void onSuccess(Foo foo) { completer.set(foo); } @Override public void onError(Failure failure) { completer.setException(failure.exception); } }); // This value is used only for debug purposes: it will be used in toString() // of returned future or error cases. return "AsyncApi.load operation"; }); }
Try to avoid creating references from listeners on the returned Future
to the CallbackToFutureAdapter.Completer
or the passed-in tag
object, as this will defeat the best-effort early failure
detection based on garbage collection.
Summary
Nested classes | |
---|---|
class |
CallbackToFutureAdapter.Completer<T>
Used to complete the future returned by |
interface |
CallbackToFutureAdapter.Resolver<T>
This interface should be implemented by the object passed into
|
Public methods | |
---|---|
static
<T>
ListenableFuture<T>
|
getFuture(Resolver<T> callback)
Returns a Future that will be completed by the |
Inherited methods | |
---|---|
Public methods
getFuture
public static ListenableFuture<T> getFuture (Resolver<T> callback)
Returns a Future that will be completed by the CallbackToFutureAdapter.Completer
provided in
CallbackToFutureAdapter.Resolver.attachCompleter(Completer)
.
The provided callback is invoked immediately inline. Any exceptions thrown by it will
fail the returned Future
.
Parameters | |
---|---|
callback |
Resolver |
Returns | |
---|---|
ListenableFuture<T> |
Content and code samples on this page are subject to the licenses described in the Content License. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2020-09-30 UTC.