private void createAndManageRequest() {
		if (mPeerPiecesAvailable == null) return;
		
		Piece piece = mPieceManager.getNeededAndAvailablePiece( mPeerPiecesAvailable );

		if (piece != null) { // The peer doesn't have any interesting piece.
			
			if (!mAmIInterested) {
				synchronized (mMessagesToSendQueue) {
					mMessagesToSendQueue.add(new Interested());
				}
				mAmIInterested = true;
				
			} else if (!mAmIChoked && (mPendingRequests.size() <= 10)) {
				int blockIndex = piece.getLeastRequestedBlockIndex();
				if (blockIndex >= 0) {
					Request request = new Request(piece.getIndex(), piece.getBlockOffset(blockIndex), piece.getBlockSize(blockIndex));
					addRequest(request);
				}
			}
		}
	}