package com.tacitknowledge.slowlight.proxyserver.handler; import com.tacitknowledge.slowlight.proxyserver.config.HandlerConfig; import io.netty.channel.ChannelHandlerContext; import io.netty.util.ReferenceCountUtil; /** * Use this DiscardChannelHandler whenever you what request data to be discarded. * In order words when this handler is added to the pipeline then it will cause request data * to be delivered only up to this handler and no response to be sent back to the client. * * @author Alexandr Donciu (adonciu@tacitknowledge.com) */ public class DiscardChannelHandler extends AbstractChannelHandler { private static final String PARAM_ENABLED = "enabled"; public DiscardChannelHandler(final HandlerConfig handlerConfig) { super(handlerConfig); } @Override protected void populateHandlerParams() { handlerParams.setProperty(PARAM_ENABLED, handlerConfig.getParam(PARAM_ENABLED, false)); } @Override public void channelActive(final ChannelHandlerContext ctx) throws Exception { ctx.fireChannelActive(); } @Override public void channelRead(final ChannelHandlerContext ctx, final Object msg) throws Exception { final boolean discard = handlerParams.getBoolean(PARAM_ENABLED, true); if (discard) { ReferenceCountUtil.release(msg); ctx.read(); } else { ctx.fireChannelRead(msg); } } }