public final class GrpcCallContext implements ApiCallContext
GrpcCallContext encapsulates context data used to make a grpc call.
GrpcCallContext is immutable in the sense that none of its methods modifies the
GrpcCallContext itself or the underlying data. Methods of the form withX
, such as #withTransportChannel, return copies of the object, but with one field changed. The immutability
and thread safety of the arguments solely depends on the arguments themselves.
Implements
ApiCallContextStatic Methods
createDefault()
public static GrpcCallContext createDefault()
Returns an empty instance with a null channel and default CallOptions.
Returns | |
---|---|
Type | Description |
GrpcCallContext |
of(Channel channel, CallOptions callOptions)
public static GrpcCallContext of(Channel channel, CallOptions callOptions)
Returns an instance with the given channel and CallOptions.
Parameters | |
---|---|
Name | Description |
channel | io.grpc.Channel |
callOptions | io.grpc.CallOptions |
Returns | |
---|---|
Type | Description |
GrpcCallContext |
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> |
Returns | |
---|---|
Type | Description |
T |
<T>withOption(ApiCallContext.Key<T> key, T value)
public GrpcCallContext <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 |
Returns | |
---|---|
Type | Description |
GrpcCallContext |
equals(Object o)
public boolean equals(Object o)
Parameter | |
---|---|
Name | Description |
o | Object |
Returns | |
---|---|
Type | Description |
boolean |
getCallOptions()
public CallOptions getCallOptions()
The CallOptions set on this context.
Returns | |
---|---|
Type | Description |
io.grpc.CallOptions |
getChannel()
public Channel getChannel()
The Channel set on this context.
Returns | |
---|---|
Type | Description |
io.grpc.Channel |
getChannelAffinity()
public Integer getChannelAffinity()
The channel affinity for this context.
Returns | |
---|---|
Type | Description |
Integer |
getExtraHeaders()
public Map<String,List<String>> getExtraHeaders()
The extra header for this context.
Returns | |
---|---|
Type | Description |
Map<String,List<String>> |
getRetrySettings()
public RetrySettings getRetrySettings()
Returns the RetrySettings to use with this context, or null
if the default
RetrySettings should be used.
Returns | |
---|---|
Type | Description |
RetrySettings |
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.
Returns | |
---|---|
Type | Description |
Set<Code> |
getStreamIdleTimeout()
public Duration getStreamIdleTimeout()
The stream idle timeout set for this context. See Also: ApiCallContext#withStreamIdleTimeout(Duration)
Returns | |
---|---|
Type | Description |
org.threeten.bp.Duration |
getStreamWaitTimeout()
public Duration getStreamWaitTimeout()
The stream wait timeout set for this context. See Also: ApiCallContext#withStreamWaitTimeout(Duration)
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.
Returns | |
---|---|
Type | Description |
ApiTracer |
hashCode()
public int hashCode()
Returns | |
---|---|
Type | Description |
int |
merge(ApiCallContext inputCallContext)
public ApiCallContext merge(ApiCallContext inputCallContext)
For any values in inputCallContext
that are not null, override the corresponding values
in the present instance.
Parameter | |
---|---|
Name | Description |
inputCallContext | ApiCallContext |
Returns | |
---|---|
Type | Description |
ApiCallContext |
nullToSelf(ApiCallContext inputContext)
public GrpcCallContext nullToSelf(ApiCallContext inputContext)
Returns inputContext cast to GrpcCallContext, or an empty GrpcCallContext if inputContext is null.
Parameter | |
---|---|
Name | Description |
inputContext | ApiCallContext the ApiCallContext to cast if it is not null |
Returns | |
---|---|
Type | Description |
GrpcCallContext |
withCallOptions(CallOptions newCallOptions)
public GrpcCallContext withCallOptions(CallOptions newCallOptions)
Returns a new instance with the call options set to the given call options.
Parameter | |
---|---|
Name | Description |
newCallOptions | io.grpc.CallOptions |
Returns | |
---|---|
Type | Description |
GrpcCallContext |
withChannel(Channel newChannel)
public GrpcCallContext withChannel(Channel newChannel)
Returns a new instance with the channel set to the given channel.
Parameter | |
---|---|
Name | Description |
newChannel | io.grpc.Channel |
Returns | |
---|---|
Type | Description |
GrpcCallContext |
withChannelAffinity(Integer affinity)
public GrpcCallContext withChannelAffinity(Integer affinity)
Parameter | |
---|---|
Name | Description |
affinity | Integer |
Returns | |
---|---|
Type | Description |
GrpcCallContext |
withCredentials(Credentials newCredentials)
public GrpcCallContext withCredentials(Credentials newCredentials)
Returns a new ApiCallContext with the given credentials set.
Parameter | |
---|---|
Name | Description |
newCredentials | com.google.auth.Credentials |
Returns | |
---|---|
Type | Description |
GrpcCallContext |
withExtraHeaders(Map<String,List<String>> extraHeaders)
public GrpcCallContext withExtraHeaders(Map<String,List<String>> extraHeaders)
Return a new ApiCallContext with the extraHeaders merged into the present instance.
Parameter | |
---|---|
Name | Description |
extraHeaders | Map<String,List<String>> |
Returns | |
---|---|
Type | Description |
GrpcCallContext |
withRequestParamsDynamicHeaderOption(String requestParams)
public GrpcCallContext withRequestParamsDynamicHeaderOption(String requestParams)
Parameter | |
---|---|
Name | Description |
requestParams | String |
Returns | |
---|---|
Type | Description |
GrpcCallContext |
withRetrySettings(RetrySettings retrySettings)
public GrpcCallContext 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());
Parameter | |
---|---|
Name | Description |
retrySettings | RetrySettings |
Returns | |
---|---|
Type | Description |
GrpcCallContext |
withRetryableCodes(Set<StatusCode.Code> retryableCodes)
public GrpcCallContext 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> |
Returns | |
---|---|
Type | Description |
GrpcCallContext |
withStreamIdleTimeout(Duration streamIdleTimeout)
public GrpcCallContext withStreamIdleTimeout(Duration streamIdleTimeout)
Returns a new ApiCallContext with the given stream idle timeout set.
This timeout only applies to a ServerStreamingCallables. It limits the maximum amount of timeout that can pass between a message being received by