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;
    }