@ThreadSafe public interface ClientInterceptor
Channel.
Implementers use this mechanism to add cross-cutting behavior to Channel and
stub implementations. Common examples of such behavior include:
| Modifier and Type | Method and Description |
|---|---|
<ReqT,RespT> |
interceptCall(MethodDescriptor<ReqT,RespT> method,
CallOptions callOptions,
Channel next)
|
<ReqT,RespT> ClientCall<ReqT,RespT> interceptCall(MethodDescriptor<ReqT,RespT> method, CallOptions callOptions, Channel next)
ClientCall creation by the next Channel.
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().
next.newCall() must not be called under a different Context
other than the current Context. The outcome of such usage is undefined and may cause
memory leak due to unbounded chain of Contexts.
method - the remote method to be called.callOptions - the runtime options to be applied to this call.next - the channel which is being intercepted.null.