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 2019-12-27.