- 2.59.0 (latest)
- 2.58.0
- 2.57.0
- 2.55.0
- 2.54.1
- 2.53.0
- 2.52.0
- 2.51.0
- 2.50.0
- 2.49.0
- 2.48.1
- 2.47.0
- 2.46.1
- 2.45.0
- 2.43.0
- 2.42.0
- 2.41.0
- 2.39.0
- 2.38.0
- 2.37.0
- 2.36.0
- 2.35.0
- 2.34.1
- 2.33.0
- 2.32.1
- 2.31.1
- 2.30.1
- 2.24.0
- 2.23.3
- 2.22.0
- 2.21.0
- 2.20.1
- 2.19.6
- 2.18.7
- 2.17.0
- 2.16.0
- 2.15.0
- 2.14.0
- 2.13.0
- 2.12.2
- 2.11.0
- 2.10.0
- 2.9.0
- 2.8.1
- 2.7.1
public final class OperationFutureImpl<ResponseT,MetadataT> implements OperationFuture<ResponseT,MetadataT>
An ApiFuture which tracks polling of a service. The polling is done periodically, based on the com.google.api.gax.retrying.TimedRetryAlgorithm.
This class is thread-safe.
This is public only for technical reasons, for advanced usage.
Implements
com.google.api.gax.longrunning.OperationFuture<ResponseT,MetadataT>Type Parameters
Name | Description |
ResponseT | |
MetadataT |
Constructors
OperationFutureImpl(RetryingFuture<OperationSnapshot> pollingFuture, ApiFuture<OperationSnapshot> initialFuture, ApiFunction<OperationSnapshot,ResponseT> responseTransformer, ApiFunction<OperationSnapshot,MetadataT> metadataTransformer)
public OperationFutureImpl(RetryingFuture<OperationSnapshot> pollingFuture, ApiFuture<OperationSnapshot> initialFuture, ApiFunction<OperationSnapshot,ResponseT> responseTransformer, ApiFunction<OperationSnapshot,MetadataT> metadataTransformer)
Creates a new operation future instance.
Name | Description |
pollingFuture | RetryingFuture<OperationSnapshot> retrying future which tracks polling of the server operation (in most cases with exponential upper bounded intervals) |
initialFuture | ApiFuture<OperationSnapshot> the initial future which started the operation on the server side |
responseTransformer | ApiFunction<OperationSnapshot,ResponseT> |
metadataTransformer | ApiFunction<OperationSnapshot,MetadataT> |
OperationFutureImpl(RetryingFuture<OperationSnapshot> pollingFuture, ApiFuture<OperationSnapshot> initialFuture, ApiFunction<OperationSnapshot,ResponseT> responseTransformer, ApiFunction<OperationSnapshot,MetadataT> metadataTransformer, ApiFunction<Exception,ResponseT> exceptionTransformer)
public OperationFutureImpl(RetryingFuture<OperationSnapshot> pollingFuture, ApiFuture<OperationSnapshot> initialFuture, ApiFunction<OperationSnapshot,ResponseT> responseTransformer, ApiFunction<OperationSnapshot,MetadataT> metadataTransformer, ApiFunction<Exception,ResponseT> exceptionTransformer)
Name | Description |
pollingFuture | RetryingFuture<OperationSnapshot> |
initialFuture | ApiFuture<OperationSnapshot> |
responseTransformer | ApiFunction<OperationSnapshot,ResponseT> |
metadataTransformer | ApiFunction<OperationSnapshot,MetadataT> |
exceptionTransformer | ApiFunction<Exception,ResponseT> |
Methods
addListener(Runnable listener, Executor executor)
public void addListener(Runnable listener, Executor executor)
Name | Description |
listener | Runnable |
executor | Executor |
cancel(boolean mayInterruptIfRunning)
public boolean cancel(boolean mayInterruptIfRunning)
Name | Description |
mayInterruptIfRunning | boolean |
Type | Description |
boolean |
get()
public ResponseT get()
Type | Description |
ResponseT |
Type | Description |
InterruptedException | |
ExecutionException |
get(long timeout, TimeUnit unit)
public ResponseT get(long timeout, TimeUnit unit)
Name | Description |
timeout | long |
unit | TimeUnit |
Type | Description |
ResponseT |
Type | Description |
InterruptedException | |
ExecutionException | |
TimeoutException |
getInitialFuture()
public ApiFuture<OperationSnapshot> getInitialFuture()
Returns the OperationSnapshot future of the initial request which started this
OperationFuture
.
Type | Description |
ApiFuture<OperationSnapshot> |
getMetadata()
public ApiFuture<MetadataT> getMetadata()
Gets the metadata of the operation tracked by this OperationFuture. This method returns the current poll metadata result (or the initial call metadata if it hasn't completed yet). The returned future completes once the current scheduled poll request (or the initial request if it hasn't completed yet) is executed and response is received from the server. The time when the polling request is executed is determined by the underlying polling algorithm.
Adding direct executor (same thread) callbacks to the future returned by this method is strongly not recommended, since the future is resolved under retrying future's internal lock and may affect the operation polling process. Adding separate thread callbacks is ok.
Note, some APIs may return null
in metadata response message. In such cases this
method may return a non-null future whose get()
method will return null
. This
behavior is API specific an should be considered a valid case, which indicates that the recent
poll request has completed, but no specific metadata was provided by the server. (i.e. most
probably providing metadata for an intermediate result is not supported by the server).
In most cases this method returns a future which is not completed yet, so calling ApiFuture#get() is a potentially blocking operation. To get metadata without blocking the current thread use the #peekMetadata() method instead.
If this operation future is completed, this method always returns the metadata from the last poll request (which completed the operation future).
If this operation future failed, this method may (depending on the failure type) return a non-failing future, representing the metadata from the last poll request (which failed the operation future).
If this operation future was cancelled, this method returns a canceled metatata future as well.
In general this method behaves similarly to RetryingFuture#getAttemptResult().
Type | Description |
ApiFuture<MetadataT> |
getName()
public String getName()
Returns the value of the name of the operation from the initial operation object returned from the initial call to start the operation. Blocks if the initial call to start the operation hasn't returned yet.
Type | Description |
String |
Type | Description |
ExecutionException | |
InterruptedException |
getPollingFuture()
public RetryingFuture<OperationSnapshot> getPollingFuture()
Returns the RetryingFuture which continues to poll OperationSnapshot.
Type | Description |
RetryingFuture<OperationSnapshot> |
isCancelled()
public boolean isCancelled()
Type | Description |
boolean |
isDone()
public boolean isDone()
Type | Description |
boolean |
peekMetadata()
public ApiFuture<MetadataT> peekMetadata()
Peeks at the metadata of the operation tracked by this OperationFuture. If the initial
future hasn't completed yet this method returns null
, otherwise it returns the latest
metadata returned from the server (i.e. either initial call metadata or the metadata received
from the latest completed poll iteration).
If not null
, the returned result is guaranteed to be an already completed future, so
ApiFuture#isDone() will always be true
and ApiFuture#get() will always
be non-blocking.
Note, some APIs may return null
in metadata response message. In such cases this
method may return a non-null future whose get()
method will return null
. This
behavior is API specific an should be considered a valid case, which indicates that the recent
poll request has completed, but no specific metadata was provided by the server (i.e. most
probably providing metadata for an intermediate result is not supported by the server).
This method should be used to check operation progress without blocking current thread. Since this method returns metadata from the latest completed poll, it is potentially slightly stale compared to the most recent data. To get the most recent data and/or get notified when the current scheduled poll request completes use the #getMetadata() method instead.
If this operation future is completed, this method always returns the metadata from the last poll request (which completed the operation future).
If this operation future failed, this method may (depending on the failure type) return a non-failing future, representing the metadata from the last poll request (which failed the operation future).
If this operation future was cancelled, this method returns a canceled metatata future as well.
In general this method behaves similarly to RetryingFuture#peekAttemptResult().
Type | Description |
ApiFuture<MetadataT> |