Package com.azure.core.util.polling
Interface SyncPollingStrategy<T,U>
- Type Parameters:
T- theTypeReferenceof the response type from a polling call, or BinaryData if raw response body should be keptU- theTypeReferenceof the final result object to deserialize into, or BinaryData if raw response body should be kept
- All Known Implementing Classes:
SyncChainedPollingStrategy,SyncDefaultPollingStrategy,SyncLocationPollingStrategy,SyncOperationResourcePollingStrategy,SyncStatusCheckPollingStrategy
public interface SyncPollingStrategy<T,U>
Represents a known strategy for polling a long-running operation in Azure.
The methods in the polling strategy will be invoked from the SyncPoller. The order of the invocations is:
canPoll(Response)- exits if returns falseonInitialResponse(Response, PollingContext, TypeReference)- immediately aftercanPoll(Response)returns truepoll(PollingContext, TypeReference)- invoked after each polling interval, if the last polling response indicates an "In Progress" status. Returns aPollResponsewith the latest statusgetResult(PollingContext, TypeReference)- invoked when the last polling response indicates a "Successfully Completed" status. Returns the final result of the given type
PollingContext or SyncPoller, the
cancel(PollingContext, PollResponse) method will be invoked. If the strategy doesn't support cancellation,
an error will be returned.
Users are not expected to provide their own implementation of this interface. Built-in polling strategies in this library and other client libraries are often sufficient for handling polling in most long-running operations in Azure. When there are special scenarios, built-in polling strategies can be inherited and select methods can be overridden to accomplish the polling requirements, without writing an entire polling strategy from scratch.
-
Method Summary
Modifier and TypeMethodDescriptiondefault Tcancel(PollingContext<T> pollingContext, PollResponse<T> initialResponse) Cancels the long-running operation if service supports cancellation.booleanChecks if this strategy is able to handle polling for this long-running operation based on the information in the initial response.getResult(PollingContext<T> pollingContext, TypeReference<U> resultType) Parses the response from the final GET call into the result type of the long-running operation.onInitialResponse(Response<?> response, PollingContext<T> pollingContext, TypeReference<T> pollResponseType) Parses the initial response into aLongRunningOperationStatus, and stores information useful for polling in thePollingContext.poll(PollingContext<T> pollingContext, TypeReference<T> pollResponseType) Parses the response from the polling URL into aPollResponse, and stores information useful for further polling and final response in thePollingContext.
-
Method Details
-
canPoll
Checks if this strategy is able to handle polling for this long-running operation based on the information in the initial response.- Parameters:
initialResponse- the response from the initial method call to activate the long-running operation- Returns:
- true if this polling strategy can handle the initial response, false if not
-
onInitialResponse
PollResponse<T> onInitialResponse(Response<?> response, PollingContext<T> pollingContext, TypeReference<T> pollResponseType) Parses the initial response into aLongRunningOperationStatus, and stores information useful for polling in thePollingContext. If the result is anything other thanLongRunningOperationStatus.IN_PROGRESS, the long-running operation will be terminated and none of the other methods will be invoked.- Parameters:
response- the response from the initial method call to activate the long-running operationpollingContext- thePollingContextfor the current polling operationpollResponseType- theTypeReferenceof the response type from a polling call, or BinaryData if raw response body should be kept. This should match the generic parameterSyncPollingStrategy.- Returns:
- the poll response containing the status and the response content
-
poll
Parses the response from the polling URL into aPollResponse, and stores information useful for further polling and final response in thePollingContext. The result must have theLongRunningOperationStatusspecified, and the entire polling response content as aBinaryData.- Parameters:
pollingContext- thePollingContextfor the current polling operationpollResponseType- theTypeReferenceof the response type from a polling call, or BinaryData if raw response body should be kept. This should match the generic parameterSyncPollingStrategy.- Returns:
- the poll response containing the status and the response content
-
getResult
Parses the response from the final GET call into the result type of the long-running operation.- Parameters:
pollingContext- thePollingContextfor the current polling operationresultType- theTypeReferenceof the final result object to deserialize into, or BinaryData if raw response body should be kept.- Returns:
- the final result
-
cancel
Cancels the long-running operation if service supports cancellation. If service does not support cancellation then the implementer should throw anIllegalStateExceptionwith an error message indicating absence of cancellation.Implementing this method is optional - by default, cancellation will not be supported unless overridden.
- Parameters:
pollingContext- thePollingContextfor the current polling operation, or null if the polling has started in aSyncPollerinitialResponse- the response from the initial operation- Returns:
- the cancellation response content
- Throws:
IllegalStateException- If cancellation isn't supported.
-