return socket.getInputStream().read (data, 0, len);
if (len > available) len = available;  int readBytes = 0; boolean completed = false;  try { begin(); readBytes = input.read (data, offset, len); completed = true; } finally { end (completed); }  if (readBytes > 0 && !dst.hasArray()) { dst.put (data); }  return readBytes;
  public int read (ByteBuffer dst) throws IOException  {    byte[] data;    int bytes = 0;    int len = dst.remaining ();	    if (!dst.hasArray ())      {        data = new byte [len];        dst.get (data, 0, len);      }    else      {        data = dst.array ();      }        return socket.getInputStream().read (data, 0, len);  }