private synchronized void seed() {
		// Silently ignore if we're already seeding.
		if (ClientState.SEEDING.equals(this.getState())) {
			return;
		}

		logger.info("Download of " + this.torrent.getPieceCount() +
				" pieces completed.");

		if (this.seed == 0) {
			logger.info("No seeding requested, stopping client...");
			this.stop();
			return;
		}

		this.setState(ClientState.SEEDING);
		if (this.seed < 0) {
			logger.info("Seeding indefinetely...");
			return;
		}

		logger.info("Seeding for " + this.seed + " seconds...");
		Timer seedTimer = new Timer();
		seedTimer.schedule(new StopSeedingTask(this), this.seed*1000);
	}