@Override
protected Object decode(ChannelHandlerContext ctx,
Channel ch,
ChannelBuffer buf,
State state) throws Exception {
Object firstMessage = super.decode(ctx, ch, buf, state);
if (firstMessage == null) {
return null;
}
if (switchTo != null) {
ctx.getPipeline().addBefore("handler", name, switchTo);
ctx.getPipeline().remove(this);
switchTo = null;
if (buf.readable()) {
if (firstMessage != null) {
return new Object[]{firstMessage, buf.readBytes(super.actualReadableBytes())};
} else {
return new Object[]{buf.readBytes(super.actualReadableBytes())};
}
} else {
return firstMessage;
}
} else {
return firstMessage;
}
}