switch(state) {
case HEADER :
buffer.markReaderIndex();
if(buffer.readableBytes() < EAPIMessage.HEADER_LEN) {
buffer.resetReaderIndex();
return;
}
byte hData[] = new byte[EAPIMessage.HEADER_LEN];
buffer.readBytes(hData);
msgFact = new EAPIMessageFactory();
msgFact.ParseMsgHead(ctx, 100, hData);
bodylen = msgFact.GetBodyLength();
state = State.BODY;
case BODY :
// Body read
buffer.markReaderIndex();
if(buffer.readableBytes() < bodylen) {
buffer.resetReaderIndex();
return;
}
// Body Parse
byte bData[] = new byte[bodylen];
buffer.readBytes(bData);
msgFact.ParseMsgBody(bData, bodylen);
out.add(msgFact);
state = State.HEADER;
}
}
}