package test.r2.integ;
import com.linkedin.data.ByteString;
import com.linkedin.r2.filter.NextFilter;
import com.linkedin.r2.filter.message.rest.RestFilter;
import com.linkedin.r2.filter.message.stream.StreamFilter;
import com.linkedin.r2.message.RequestContext;
import com.linkedin.r2.message.rest.RestRequest;
import com.linkedin.r2.message.rest.RestResponse;
import com.linkedin.r2.message.stream.StreamRequest;
import com.linkedin.r2.message.stream.StreamResponse;
import com.linkedin.r2.message.stream.entitystream.Observer;
import java.util.Map;
/**
* @author Zhenkai Zhu
*/
public class LogEntityLengthFilter implements RestFilter
{
private volatile int _reqEntityLen = 0;
private volatile int _resEntityLen = 0;
@Override
public void onRestRequest(RestRequest req,
RequestContext requestContext,
Map<String, String> wireAttrs,
NextFilter<RestRequest, RestResponse> nextFilter)
{
_reqEntityLen = req.getEntity().length();
nextFilter.onRequest(req, requestContext, wireAttrs);
}
@Override
public void onRestResponse(RestResponse res,
RequestContext requestContext,
Map<String, String> wireAttrs,
NextFilter<RestRequest, RestResponse> nextFilter)
{
_resEntityLen = res.getEntity().length();
nextFilter.onResponse(res, requestContext, wireAttrs);
}
@Override
public void onRestError(Throwable ex,
RequestContext requestContext,
Map<String, String> wireAttrs,
NextFilter<RestRequest, RestResponse> nextFilter)
{
nextFilter.onError(ex, requestContext, wireAttrs);
}
public int getRequestEntityLength()
{
return _reqEntityLen;
}
public int getResponseEntityLength()
{
return _resEntityLen;
}
}