⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 downloadmanagerimpl.java

📁 java 文件下载器。可自定义
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
		open_for_seeding = false;
		break MISSING_BLOCK_LABEL_184;
		Exception exception;
		exception;
		open_for_seeding = false;
		throw exception;
		e;
		setFailed(e);
	}

	public void setStateWaiting()
	{
		controller.setStateWaiting();
	}

	public void setStateFinishing()
	{
		controller.setStateFinishing();
	}

	public void setStateQueued()
	{
		controller.setStateQueued();
	}

	public int getState()
	{
		return controller.getState();
	}

	public int getSubState()
	{
		return controller.getSubState();
	}

	public boolean canForceRecheck()
	{
		if (getTorrent() == null)
			return false;
		else
			return controller.canForceRecheck();
	}

	public void forceRecheck()
	{
		controller.forceRecheck(null);
	}

	public void forceRecheck(ForceRecheckListener l)
	{
		controller.forceRecheck(l);
	}

	public void setPieceCheckingEnabled(boolean enabled)
	{
		controller.setPieceCheckingEnabled(enabled);
	}

	public void resetFile(DiskManagerFileInfo file)
	{
		int state = getState();
		if (state == 70 || state == 100)
			DiskManagerFactory.clearResumeData(this, file);
		else
			Debug.out("Download not stopped");
	}

	public void recheckFile(DiskManagerFileInfo file)
	{
		int state = getState();
		if (state == 70 || state == 100)
			DiskManagerFactory.recheckFile(this, file);
		else
			Debug.out("Download not stopped");
	}

	public void startDownload()
	{
		controller.startDownload(getTrackerClient());
	}

	public void stopIt(int state_after_stopping, boolean remove_torrent, boolean remove_data)
	{
		download_manager_state.setLongAttribute("timestopped", SystemTime.getCurrentTime());
		controller.stopIt(state_after_stopping, remove_torrent, remove_data);
		download_manager_state.setActive(false);
		break MISSING_BLOCK_LABEL_53;
		Exception exception;
		exception;
		download_manager_state.setActive(false);
		throw exception;
	}

	public boolean pause()
	{
		return globalManager.pauseDownload(this);
	}

	public boolean isPaused()
	{
		return globalManager.isPaused(this);
	}

	public void resume()
	{
		globalManager.resumeDownload(this);
	}

	public boolean getAssumedComplete()
	{
		return assumedComplete;
	}

	public boolean requestAssumedCompleteMode()
	{
		boolean bCompleteNoDND = controller.isDownloadComplete(false);
		setAssumedComplete(bCompleteNoDND);
		return bCompleteNoDND;
	}

	protected void setAssumedComplete(boolean _assumedComplete)
	{
		if (_assumedComplete)
		{
			long completedOn = download_manager_state.getLongParameter("stats.download.completed.time");
			if (completedOn <= 0L)
				download_manager_state.setLongParameter("stats.download.completed.time", SystemTime.getCurrentTime());
		}
		if (assumedComplete == _assumedComplete)
			return;
		assumedComplete = _assumedComplete;
		if (!assumedComplete)
			controller.setStateDownloading();
		if (position != -1)
		{
			DownloadManager dms[] = {
				this
			};
			position = globalManager.getDownloadManagers().size() + 1;
			if (COConfigurationManager.getBooleanParameter("Newly Seeding Torrents Get First Priority"))
				globalManager.moveTop(dms);
			else
				globalManager.moveEnd(dms);
			globalManager.fixUpDownloadManagerPositions();
		}
		listeners.dispatch(3, ((Object) (new Object[] {
			this, new Boolean(_assumedComplete)
		})));
	}

	public int getNbSeeds()
	{
		PEPeerManager peerManager = controller.getPeerManager();
		if (peerManager != null)
			return peerManager.getNbSeeds();
		else
			return 0;
	}

	public int getNbPeers()
	{
		PEPeerManager peerManager = controller.getPeerManager();
		if (peerManager != null)
			return peerManager.getNbPeers();
		else
			return 0;
	}

	public String getTrackerStatus()
	{
		TRTrackerAnnouncer tc = getTrackerClient();
		if (tc != null)
			return tc.getStatusString();
		if (torrent != null)
		{
			TRTrackerScraperResponse response = getTrackerScrapeResponse();
			if (response != null)
				return response.getStatusString();
		}
		return "";
	}

	public TRTrackerAnnouncer getTrackerClient()
	{
		return tracker_client;
	}

	public void setAnnounceResult(DownloadAnnounceResult result)
	{
		TRTrackerAnnouncer cl = getTrackerClient();
		if (cl == null)
		{
			return;
		} else
		{
			cl.setAnnounceResult(result);
			return;
		}
	}

	public void setScrapeResult(DownloadScrapeResult result)
	{
		if (torrent != null && result != null)
		{
			TRTrackerScraper scraper = globalManager.getTrackerScraper();
			TRTrackerScraperResponse current_resp = getTrackerScrapeResponse();
			URL target_url;
			if (current_resp != null)
				target_url = current_resp.getURL();
			else
				target_url = torrent.getAnnounceURL();
			scraper.setScrape(torrent, target_url, result);
		}
	}

	public int getNbPieces()
	{
		if (torrent == null)
			return 0;
		else
			return torrent.getNumberOfPieces();
	}

	public int getTrackerTime()
	{
		TRTrackerAnnouncer tc = getTrackerClient();
		if (tc != null)
			return tc.getTimeUntilNextUpdate();
		if (torrent != null)
		{
			TRTrackerScraperResponse response = getTrackerScrapeResponse();
			if (response != null)
				if (response.getStatus() == 3)
					return -1;
				else
					return (int)((response.getNextScrapeStartTime() - SystemTime.getCurrentTime()) / 1000L);
		}
		return 60;
	}

	public TOTorrent getTorrent()
	{
		return torrent;
	}

	public File getSaveLocation()
	{
		File save_location = torrent_save_location;
		if (save_location == cached_save_location)
			return cached_save_location_result;
		File res = download_manager_state.getFileLink(save_location);
		if (res == null || res.equals(save_location))
			res = save_location;
		else
			try
			{
				res = res.getCanonicalFile();
			}
			catch (Throwable e)
			{
				res = res.getAbsoluteFile();
			}
		cached_save_location = save_location;
		cached_save_location_result = res;
		return res;
	}

	public File getAbsoluteSaveLocation()
	{
		return torrent_save_location;
	}

	public void setTorrentSaveDir(String new_dir)
	{
		setTorrentSaveDir(new_dir, getAbsoluteSaveLocation().getName());
	}

	public void setTorrentSaveDir(String new_dir, String dl_name)
	{
		File old_location = torrent_save_location;
		File new_location = new File(new_dir, dl_name);
		if (new_location.equals(old_location))
			return;
		updateFileLinks(old_location, new_location);
		torrent_save_location = new_location;
		try
		{
			torrent_save_location = torrent_save_location.getCanonicalFile();
		}
		catch (Throwable e)
		{
			torrent_save_location = torrent_save_location.getAbsoluteFile();
		}
		Logger.log(new LogEvent(this, LogIDs.CORE, (new StringBuilder()).append("Torrent save directory changing from \"").append(old_location.getPath()).append("\" to \"").append(new_location.getPath()).toString()));
		controller.fileInfoChanged();
	}

	public String getPieceLength()
	{
		if (torrent != null)
			return DisplayFormatters.formatByteCountToKiBEtc(torrent.getPieceLength());
		else
			return "";
	}

	public String getTorrentFileName()
	{
		return torrentFileName;
	}

	public void setTorrentFileName(String string)
	{
		torrentFileName = string;
	}

	public void setTrackerScrapeResponse(TRTrackerScraperResponse response)
	{
		Object res[] = getActiveScrapeResponse();
		URL active_url = (URL)res[1];
		if (active_url != null && torrent != null)
			torrent.setAnnounceURL(active_url);
		if (response != null)
		{
			if (response.isValid())
			{
				int state = getState();
				if (state == 100 || state == 70)
				{
					long minNextScrape = SystemTime.getCurrentTime() + (state != 100 ? 0x36ee80L : 0x6ddd00L);
					if (response.getNextScrapeStartTime() < minNextScrape)
						response.setNextScrapeStartTime(minNextScrape);
				}
			} else
			if (response.getStatus() == 0)
			{
				int state = getState();
				long minNextScrape;
				if (state == 100 || state == 70)
				{
					minNextScrape = SystemTime.getCurrentTime() + (state != 100 ? 0x2bf20L : 0x927c0L);
				} else
				{
					int sr = getStats().getShareRatio();
					minNextScrape = SystemTime.getCurrentTime() + (long)((sr <= 10000 ? sr + 1000 : 10000) * 60);
				}
				if (response.getNextScrapeStartTime() < minNextScrape)
					response.setNextScrapeStartTime(minNextScrape);
			}
			tracker_listeners.dispatch(2, response);
		}
	}

	public TRTrackerScraperResponse getTrackerScrapeResponse()
	{
		Object res[] = getActiveScrapeResponse();
		return (TRTrackerScraperResponse)res[0];
	}

	protected Object[] getActiveScrapeResponse()
	{
		TRTrackerScraperResponse response = null;
		URL active_url = null;
		TRTrackerScraper scraper = globalManager.getTrackerScraper();
		TRTrackerAnnouncer tc = getTrackerClient();
		if (tc != null)
			response = scraper.scrape(tc);
		if (response == null && torrent != null)
		{
			TRTrackerScraperResponse non_null_response = null;
			TOTorrentAnnounceURLSet sets[];
			try
			{
				sets = torrent.getAnnounceURLGroup().getAnnounceURLSets();
			}
			catch (Exception e)
			{
				return (new Object[] {
					scraper.scrape(torrent), active_url
				});
			}
			if (sets.length == 0)
			{
				response = scraper.scrape(torrent);
			} else
			{
				Random scrape_random = new Random(scrape_random_seed);
				for (int i = 0; response == null && i < sets.length; i++)
				{
					TOTorrentAnnounceURLSet set = sets[i];
					URL urls[] = set.getAnnounceURLs();
					List rand_urls = new ArrayList();
					for (int j = 0; j < urls.length; j++)
					{
						URL url = urls[j];
						int pos = (int)(scrape_random.nextDouble() * (double)(rand_urls.size() + 1));
						rand_urls.add(pos, url);
					}

					for (int j = 0; response == null && j < rand_urls.size(); j++)
					{
						URL url = (URL)rand_urls.get(j);
						response = scraper.scrape(torrent, url);
						if (response == null)
							continue;
						int status = response.getStatus();
						if (status == 2)
						{
							active_url = url;
							break;
						}
						if (status == 0 || status == 3)
							break;
						if (response.isValid() && status != 1)
							continue;
						if (non_null_response == null)
							non_null_response = response;
						response = null;
					}

				}

				if (response == null)
					response = non_null_response;
			}
		}
		return (new Object[] {
			response, active_url
		});
	}

	public void requestTrackerAnnounce(boolean force)
	{
		TRTrackerAnnouncer tc = getTrackerClient();
		if (tc != null)
			tc.update(force);
	}

	public void requestTrackerScrape(boolean force)
	{
		if (torrent != null)
		{
			TRTrackerScraper scraper = globalManager.getTrackerScraper();
			scraper.scrape(torrent, force);
		}
	}

	protected void setTrackerRefreshDelayOverrides(int percent)
	{
		TRTrackerAnnouncer tc = getTrackerClient();
		if (tc != null)
			tc.setRefreshDelayOverrides(percent);
	}

	protected boolean activateRequest(int count)
	{
		Iterator it = activation_listeners.iterator();
_L2:
		DownloadManagerActivationListener listener;
		if (!it.hasNext())
			break; /* Loop/switch isn't completed */
		listener = (DownloadManagerActivationListener)it.next();
		if (listener.activateRequest(count))
			return true;
		continue; /* Loop/switch isn't completed */
		Throwable e;
		e;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -