public final class HttpJsonCallContext implements ApiCallContext
HttpJsonCallContext encapsulates context data used to make an http-json call.
HttpJsonCallContext is immutable in the sense that none of its methods modifies the HttpJsonCallContext itself or the underlying data. Methods of the form withX
return copies of the object, but with one field changed. The immutability and thread safety of the arguments solely depends on the arguments themselves.
Inheritance
Object > HttpJsonCallContextStatic Methods
createDefault()
public static HttpJsonCallContext createDefault()
Returns an empty instance.
of(HttpJsonChannel channel, HttpJsonCallOptions options)
public static HttpJsonCallContext of(HttpJsonChannel channel, HttpJsonCallOptions options)
Methods
<T>getOption(ApiCallContext.Key<T> key)
public T <T>getOption(ApiCallContext.Key<T> key)
Return the api call context option set for this context.
Parameter |
---|
Name | Description |
key | Key<T>
|
<T>withOption(ApiCallContext.Key<T> key, T value)
public ApiCallContext <T>withOption(ApiCallContext.Key<T> key, T value)
Return a new ApiCallContext with additional option merged into the present instance. Any existing value of the key is overwritten.
Parameters |
---|
Name | Description |
key | Key<T>
|
value | T
|
equals(Object o)
public boolean equals(Object o)
Parameter |
---|
Name | Description |
o | Object
|
OverridesgetCallOptions()
public HttpJsonCallOptions getCallOptions()
getChannel()
public HttpJsonChannel getChannel()
getCredentials()
public Credentials getCredentials()
Returns |
---|
Type | Description |
com.google.auth.Credentials | |
getDeadline()
public Instant getDeadline()
Returns |
---|
Type | Description |
org.threeten.bp.Instant | |
public Map<String,List<String>> getExtraHeaders()
Return the extra headers set for this context.
getRetrySettings()
public RetrySettings getRetrySettings()
getRetryableCodes()
public Set<StatusCode.Code> getRetryableCodes()
Returns the retryable codes to use with this context, or null
if the default retryable codes should be used.
getStreamIdleTimeout()
public Duration getStreamIdleTimeout()
Returns |
---|
Type | Description |
org.threeten.bp.Duration | |
getStreamWaitTimeout()
public Duration getStreamWaitTimeout()
Returns |
---|
Type | Description |
org.threeten.bp.Duration | |
getTimeout()
public Duration getTimeout()
Returns the configured per-RPC timeout.
Returns |
---|
Type | Description |
org.threeten.bp.Duration | |
getTracer()
public ApiTracer getTracer()
The ApiTracer that was previously set for this context.
The ApiTracer will be used to trace the current operation and to annotate various events like retries.
hashCode()
Returns |
---|
Type | Description |
int | |
Overridesmerge(ApiCallContext inputCallContext)
public HttpJsonCallContext merge(ApiCallContext inputCallContext)
For any values in inputCallContext
that are not null, override the corresponding values in the present instance.
nullToSelf(ApiCallContext inputContext)
public HttpJsonCallContext nullToSelf(ApiCallContext inputContext)
withCallOptions(HttpJsonCallOptions newCallOptions)
public HttpJsonCallContext withCallOptions(HttpJsonCallOptions newCallOptions)
withChannel(HttpJsonChannel newChannel)
public HttpJsonCallContext withChannel(HttpJsonChannel newChannel)
withCredentials(Credentials newCredentials)
public HttpJsonCallContext withCredentials(Credentials newCredentials)
Returns a new ApiCallContext with the given credentials set.
Parameter |
---|
Name | Description |
newCredentials | com.google.auth.Credentials
|
withDeadline(Instant newDeadline)
public HttpJsonCallContext withDeadline(Instant newDeadline)
Parameter |
---|
Name | Description |
newDeadline | org.threeten.bp.Instant
|
public ApiCallContext withExtraHeaders(Map<String,List<String>> extraHeaders)
Return a new ApiCallContext with the extraHeaders merged into the present instance.
withRetrySettings(RetrySettings retrySettings)
public HttpJsonCallContext withRetrySettings(RetrySettings retrySettings)
Returns a new ApiCallContext with the given RetrySettings set.
This sets the RetrySettings to use for the RPC. These settings will work in combination with either the default retryable codes for the RPC, or the retryable codes supplied through #withRetryableCodes(Set). Calling #withRetrySettings(RetrySettings) on an RPC that does not include Code#DEADLINE_EXCEEDED as one of its retryable codes (or without calling #withRetryableCodes(Set) with a set that includes at least Code#DEADLINE_EXCEEDED) will effectively only set a single timeout that is equal to RetrySettings#getInitialRpcTimeout(). If this timeout is exceeded, the RPC will not be retried and will fail with Code#DEADLINE_EXCEEDED.
Example usage:
ApiCallContext context = GrpcCallContext.createDefault()
.withRetrySettings(RetrySettings.newBuilder()
.setInitialRetryDelay(Duration.ofMillis(10L))
.setInitialRpcTimeout(Duration.ofMillis(100L))
.setMaxAttempts(10)
.setMaxRetryDelay(Duration.ofSeconds(10L))
.setMaxRpcTimeout(Duration.ofSeconds(30L))
.setRetryDelayMultiplier(1.4)
.setRpcTimeoutMultiplier(1.5)
.setTotalTimeout(Duration.ofMinutes(10L))
.build())
.withRetryableCodes(Sets.newSet(
StatusCode.Code.UNAVAILABLE,
StatusCode.Code.DEADLINE_EXCEEDED));
Setting a logical call timeout for the context can be done similarly with RetrySettings.Builder#setLogicalTimeout(Duration timeout).
Example usage:
ApiCallContext context = GrpcCallContext.createDefault()
.withRetrySettings(RetrySettings.newBuilder()
.setInitialRetryDelay(Duration.ofMillis(10L))
.setMaxRetryDelay(Duration.ofSeconds(10L))
.setRetryDelayMultiplier(1.4)
.setMaxAttempts(10)
.setLogicalTimeout(Duration.ofSeconds(30L))
.build());
withRetryableCodes(Set<StatusCode.Code> retryableCodes)
public HttpJsonCallContext withRetryableCodes(Set<StatusCode.Code> retryableCodes)
Returns a new ApiCallContext with the given retryable codes set.
This sets the retryable codes to use for the RPC. These settings will work in combination with either the default RetrySettings for the RPC, or the RetrySettings supplied through #withRetrySettings(RetrySettings).
Setting a non-empty set of retryable codes for an RPC that is not already retryable by default, will not have any effect and the RPC will NOT be retried. This option can only be used to change which codes are considered retryable for an RPC that already has at least one retryable code in its default settings.
Parameter |
---|
Name | Description |
retryableCodes | Set<Code>
|
withStreamIdleTimeout(Duration streamIdleTimeout)
public HttpJsonCallContext withStreamIdleTimeout(Duration streamIdleTimeout)
Parameter |
---|
Name | Description |
streamIdleTimeout | org.threeten.bp.Duration
|
withStreamWaitTimeout(Duration streamWaitTimeout)
public HttpJsonCallContext withStreamWaitTimeout(Duration streamWaitTimeout)
Parameter |
---|
Name | Description |
streamWaitTimeout | org.threeten.bp.Duration
|
withTimeout(Duration timeout)
public HttpJsonCallContext withTimeout(Duration timeout)
Returns a new ApiCallContext with the given timeout set.
This sets the maximum amount of time a single unary RPC attempt can take. If retries are enabled, then this can take much longer, as each RPC attempt will have the same constant timeout. Unlike a deadline, timeouts are relative durations that are measure from the beginning of each RPC attempt. Please note that this limits the duration of a server RPC as well.
If a method has default com.google.api.gax.retrying.RetrySettings, the max attempts and/or total timeout is still respected when scheduling each RPC attempt.
Parameter |
---|
Name | Description |
timeout | org.threeten.bp.Duration
|
withTracer(ApiTracer newTracer)
public HttpJsonCallContext withTracer(ApiTracer newTracer)
withTransportChannel(TransportChannel inputChannel)
public HttpJsonCallContext withTransportChannel(TransportChannel inputChannel)
Returns a new ApiCallContext with the given channel set.