public void onDataReceived(RetainableByteBuffer data) { if (data.remaining() == 0) throw new AssertionError(); RetainableByteBuffer msg = m_stream.getNext(data); msg.getInt(); /* skip message length */ final int testType = msg.getInt(); switch (testType) { case 1: m_session.replaceListener(new Test1Listener(m_session, m_stream)); break; case 2: m_session.replaceListener(new Test2Listener(m_session, m_stream)); break; default: throw new AssertionError(); } }