@Override
	public void read(ChannelHandlerContext ctx) {
		super.read(ctx);
		ByteBuffer buffer = ctx.getBuffer();
		buffer.flip();
		while (buffer.hasRemaining()) {
			D data = this.decoder.doDecode(ctx);
			if (data != null) {
				this.process(ctx, data);
			} else {
				buffer.compact();
				return;
			}

		}
		ctx.releaseBuffer();
	}