@ThreadSafe public interface ClientInterceptor
Implementers use this mechanism to add cross-cutting behavior to
stub implementations. Common examples of such behavior include:
The interceptor may be called for multiple
calls by one or more threads
without completing the previous ones first. Refer to the
ClientCall.Listener docs for more details regarding thread
safety of the returned listener.
<ReqT,RespT> ClientCall<ReqT,RespT> interceptCall(MethodDescriptor<ReqT,RespT> method, CallOptions callOptions, Channel next)
ClientCallcreation by the
Many variations of interception are possible. Complex implementations may return a wrapper
around the result of
next.newCall(), whereas a simpler implementation may just modify
the header metadata prior to returning the result of
next.newCall() must not be called under a different
other than the current
Context. The outcome of such usage is undefined and may cause
memory leak due to unbounded chain of
method- the remote method to be called.
callOptions- the runtime options to be applied to this call.
next- the channel which is being intercepted.