private void receiveLoop() { while (run) { try { buf.reserve(4, false); in.readFully(buf.bytes(), 0, 4); buf.length(4); int len = buf.direct().getInt(0); buf.reserve(len, false); in.readFully(buf.bytes(), 0, len); buf.length(len); dispatcher.dispatch(buf.direct(), 0, len); } catch (Exception e) { stop(); if (run) { if (exceptionHandler != null) { exceptionHandler.error("TCP Receive Error", e); } else { logger.error("TcpReceiver Error", e); } } } } }