/**
   * Register a new piece data request.
   *
   * @param piece_number
   * @param piece_offset
   * @param length
   */
  public void addPieceRequest(int piece_number, int piece_offset, int length) {
    if (destroyed) return;

    DiskManagerReadRequest dmr =
        peer.getManager().getDiskManager().createReadRequest(piece_number, piece_offset, length);

    try {
      lock_mon.enter();

      requests.addLast(dmr);

    } finally {
      lock_mon.exit();
    }

    doReadAheadLoads();
  }