@Extensible(singleton=false) public abstract class Filter extends Object
| 构造器和说明 |
|---|
Filter() |
| 限定符和类型 | 方法和说明 |
|---|---|
abstract SofaResponse |
invoke(FilterInvoker invoker,
SofaRequest request)
Do filtering
doBeforeInvoke(); // the code before invoke, even new dummy response for return (skip all next invoke). |
boolean |
needToLoad(FilterInvoker invoker)
Is this filter need load in this invoker
|
void |
onAsyncResponse(ConsumerConfig config,
SofaRequest request,
SofaResponse response,
Throwable exception)
Do filtering after asynchronous respond, only supported in CONSUMER SIDE.
|
public boolean needToLoad(FilterInvoker invoker)
invoker - Filter invoker contains ProviderConfig or ConsumerConfig.public abstract SofaResponse invoke(FilterInvoker invoker, SofaRequest request) throws SofaRpcException
doBeforeInvoke(); // the code before invoke, even new dummy response for return (skip all next invoke).
SofaResponse response = invoker.invoke(request); // do next invoke(call next filter, call remote, call implements).
doAfterInvoke(); // the code after invoke
invoker - Invokerrequest - RequestSofaRpcException - Occur rpc exceptionpublic void onAsyncResponse(ConsumerConfig config, SofaRequest request, SofaResponse response, Throwable exception) throws SofaRpcException
Because when do async invoke, the code after invoke has been executed after invoker return dummy empty response. We need execute filter code after get true response from server.
NOTICE: The thread run onAsyncResponse(com.alipay.sofa.rpc.config.ConsumerConfig, com.alipay.sofa.rpc.core.request.SofaRequest, com.alipay.sofa.rpc.core.response.SofaResponse, java.lang.Throwable) is different with the thread run invoke(com.alipay.sofa.rpc.filter.FilterInvoker, com.alipay.sofa.rpc.core.request.SofaRequest)
config - ConsumerConfig, READ ONLY PLEASE.request - Requestresponse - Response from server (if exception is null)exception - Exception from server (if response is null)SofaRpcException - Other rpc exceptioninvoke(FilterInvoker, SofaRequest),
SofaRequest.isAsync()Copyright © 2008–2018 The Ant Financial. All rights reserved.