// if there is any data left that cannot be decoded, we store
// it in a buffer in the session and next time this decoder is
// invoked the session buffer gets appended to
if (buf.hasRemaining()) {
if (usingSessionBuffer)
buf.compact();
else
storeRemainingInSession(buf, session);
} else {
if (usingSessionBuffer)
removeSessionBuffer(session);