// Returns true when request is complete
  // May expand rbb if more room required
  //
  private boolean receive(SelectionKey sk) throws IOException {
    ByteBuffer tmp = null;

    if (requestReceived) {
      return true;
    }

    if (!cio.doHandshake(sk)) {
      return false;
    }

    if ((cio.read() < 0) || Request.isComplete(cio.getReadBuf())) {
      rbb = cio.getReadBuf();
      return (requestReceived = true);
    }
    return false;
  }