package com.deepnighttwo.nettylearn.test.handler; import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.handler.codec.frame.FrameDecoder; public class DynLenTextDecoder extends FrameDecoder { public DynLenTextDecoder() { } @Override protected Object decode(ChannelHandlerContext ctx, Channel channel, ChannelBuffer buffer) throws Exception { int len = ((char) (buffer.getByte(buffer.readerIndex()))) - '0'; int avaliable = buffer.readableBytes(); if (avaliable >= len + 1) { buffer.readByte(); byte[] currContent = new byte[len]; buffer.readBytes(currContent); String content = new String(currContent); return content; } else { return null; } } }