public boolean write(SocketWritable socketWritable) { final Packet packet = (Packet) socketWritable; if (nodeEngine.getNode().isActive()) { packet.setConn(thisConnection); MemberImpl member = nodeEngine.getClusterService().getMember(thisAddress); if (member != null) { member.didRead(); } nodeEngine.handlePacket(packet); return true; } return false; }
private Packet readFromPacket(Packet packet) { Packet newPacket = new Packet(); ByteBuffer buffer = ByteBuffer.allocate(4096); boolean writeDone; boolean readDone; do { writeDone = packet.writeTo(buffer); buffer.flip(); readDone = newPacket.readFrom(buffer); if (buffer.hasRemaining()) { throw new IllegalStateException("Buffer should be empty! " + buffer); } buffer.clear(); } while (!writeDone); if (!readDone) { throw new IllegalStateException("Read should be completed!"); } newPacket.setConn(localConnection); return newPacket; }