int position = content.position();
int limit = content.limit();
for (Iterator iter = chain.iterator(); iter.hasNext();) {
PacketDecoder decoder = (PacketDecoder) iter.next();
Object obj = decoder.decode(session, packet);
if (obj != null)
return obj;
// not use slice to create new buffer, reduce memory cost
content.limit(limit);