package org.ripple.power.server.chat;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.ReplayingDecoder;
import io.netty.util.CharsetUtil;
import java.util.List;
public class PolicyDecoder extends ReplayingDecoder<Void> {
private final ByteBuf requestBuffer = Unpooled.copiedBuffer(
"<policy-file-request/>", CharsetUtil.US_ASCII);
@Override
protected void decode(ChannelHandlerContext ctx, ByteBuf buffer,
List<Object> out) throws Exception {
ByteBuf data = buffer.readBytes(requestBuffer.readableBytes());
if (data.equals(requestBuffer)) {
out.add(data);
} else {
data.release();
ctx.channel().close();
}
}
@Override
protected void handlerRemoved0(ChannelHandlerContext ctx) {
requestBuffer.release();
}
}