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

📄 globalmanagerimpl.java

📁 java 文件下载器。可自定义
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
							triggerAddListener(downloadsAdded);
							downloadsAdded.clear();
						}
					}
				}
			}
			catch (UnsupportedEncodingException e1) { }
			catch (Throwable e)
			{
				Logger.log(new LogEvent(LOGID, "Error while loading downloads.  One download may not have been added to the list.", e));
			}
		} while (true);
		COConfigurationManager.setParameter("Set Completion Flag For Completed Downloads On Start", false);
		pause_data = (ArrayList)map.get("pause_data");
		if (pause_data == null)
			break MISSING_BLOCK_LABEL_982;
		paused_list_mon.enter();
		for (int i = 0; i < pause_data.size(); i++)
		{
			Object pd = pause_data.get(i);
			byte key[];
			boolean force;
			if (pd instanceof byte[])
			{
				key = (byte[])(byte[])pause_data.get(i);
				force = false;
			} else
			{
				Map m = (Map)pd;
				key = (byte[])(byte[])m.get("hash");
				force = ((Long)m.get("force")).intValue() == 1;
			}
			paused_list.add(((Object) (new Object[] {
				new HashWrapper(key), new Boolean(force)
			})));
		}

		paused_list_mon.exit();
		break MISSING_BLOCK_LABEL_982;
		Exception exception;
		exception;
		paused_list_mon.exit();
		throw exception;
		fixUpDownloadManagerPositions();
		Logger.log(new LogEvent(LOGID, (new StringBuilder()).append("Loaded ").append(managers_cow.size()).append(" torrents").toString()));
		loadingComplete = true;
		triggerAddListener(downloadsAdded);
		loadingSem.releaseForever();
		break MISSING_BLOCK_LABEL_1102;
		Throwable e;
		e;
		Debug.printStackTrace(e);
		loadingComplete = true;
		triggerAddListener(downloadsAdded);
		loadingSem.releaseForever();
		break MISSING_BLOCK_LABEL_1102;
		Exception exception1;
		exception1;
		loadingComplete = true;
		triggerAddListener(downloadsAdded);
		loadingSem.releaseForever();
		throw exception1;
		DownloadManagerStateFactory.discardGlobalStateCache();
		break MISSING_BLOCK_LABEL_1116;
		Exception exception2;
		exception2;
		DownloadManagerStateFactory.discardGlobalStateCache();
		throw exception2;
	}

	private void triggerAddListener(List downloadsToAdd)
	{
		managers_mon.enter();
		List listenersCopy = listeners.getListenersCopy();
		for (int j = 0; j < listenersCopy.size(); j++)
		{
			GlobalManagerListener gmListener = (GlobalManagerListener)listenersCopy.get(j);
			for (int i = 0; i < downloadsToAdd.size(); i++)
			{
				DownloadManager dm = (DownloadManager)downloadsToAdd.get(i);
				gmListener.downloadManagerAdded(dm);
			}

		}

		managers_mon.exit();
		break MISSING_BLOCK_LABEL_109;
		Exception exception;
		exception;
		managers_mon.exit();
		throw exception;
	}

	protected void saveDownloads(boolean immediate)
	{
		if (!immediate)
		{
			needsSaving = true;
			return;
		}
		if (!loadingComplete)
		{
			needsSaving = true;
			return;
		}
		needsSaving = false;
		if (cripple_downloads_config)
			return;
		Map map;
		managers_mon.enter();
		Collections.sort(managers_cow, new Comparator() {

			final GlobalManagerImpl this$0;

			public final int compare(Object a, Object b)
			{
				return ((DownloadManager)a).getPosition() - ((DownloadManager)b).getPosition();
			}

			
			{
				this$0 = GlobalManagerImpl.this;
				super();
			}
		});
		if (Logger.isEnabled())
			Logger.log(new LogEvent(LOGID, (new StringBuilder()).append("Saving Download List (").append(managers_cow.size()).append(" items)").toString()));
		map = new HashMap();
		List list = new ArrayList(managers_cow.size());
		for (int i = 0; i < managers_cow.size(); i++)
		{
			DownloadManager dm = (DownloadManager)managers_cow.get(i);
			DownloadManagerStats dm_stats = dm.getStats();
			Map dmMap = new HashMap();
			TOTorrent torrent = dm.getTorrent();
			if (torrent != null)
				try
				{
					dmMap.put("torrent_hash", torrent.getHash());
				}
				catch (TOTorrentException e)
				{
					Debug.printStackTrace(e);
				}
			File save_loc = dm.getAbsoluteSaveLocation();
			dmMap.put("persistent", new Long(dm.isPersistent() ? 1L : 0L));
			dmMap.put("torrent", dm.getTorrentFileName());
			dmMap.put("save_dir", save_loc.getParent());
			dmMap.put("save_file", save_loc.getName());
			dmMap.put("maxdl", new Long(dm_stats.getDownloadRateLimitBytesPerSecond()));
			dmMap.put("maxul", new Long(dm_stats.getUploadRateLimitBytesPerSecond()));
			int state = dm.getState();
			if (state == 100)
				state = 70;
			else
			if (dm.getAssumedComplete() && !dm.isForceStart() && state != 70)
				state = 75;
			else
			if (state != 70 && state != 75 && state != 0)
				state = 0;
			dmMap.put("state", new Long(state));
			dmMap.put("position", new Long(dm.getPosition()));
			dmMap.put("downloaded", new Long(dm_stats.getTotalDataBytesReceived()));
			dmMap.put("uploaded", new Long(dm_stats.getTotalDataBytesSent()));
			dmMap.put("completed", new Long(dm_stats.getDownloadCompleted(true)));
			dmMap.put("discarded", new Long(dm_stats.getDiscarded()));
			dmMap.put("hashfailbytes", new Long(dm_stats.getHashFailBytes()));
			dmMap.put("forceStart", new Long(!dm.isForceStart() || dm.getState() == 30 ? 0L : 1L));
			dmMap.put("secondsDownloading", new Long(dm_stats.getSecondsDownloading()));
			dmMap.put("secondsOnlySeeding", new Long(dm_stats.getSecondsOnlySeeding()));
			dmMap.put("uploads", new Long(dm.getMaxUploads()));
			dmMap.put("creationTime", new Long(dm.getCreationTime()));
			dm.saveDownload();
			List file_priorities = (List)dm.getData("file_priorities");
			if (file_priorities != null)
				dmMap.put("file_priorities", file_priorities);
			dmMap.put("allocated", new Long(!dm.isDataAlreadyAllocated() ? 0L : 1L));
			list.add(dmMap);
		}

		map.put("downloads", list);
		paused_list_mon.enter();
		if (!paused_list.isEmpty())
		{
			ArrayList pause_data = new ArrayList();
			for (int i = 0; i < paused_list.size(); i++)
			{
				Object data[] = (Object[])(Object[])paused_list.get(i);
				HashWrapper hash = (HashWrapper)data[0];
				Boolean force = (Boolean)data[1];
				Map m = new HashMap();
				m.put("hash", hash.getHash());
				m.put("force", new Long(force.booleanValue() ? 1L : 0L));
				pause_data.add(m);
			}

			map.put("pause_data", pause_data);
		}
		paused_list_mon.exit();
		break MISSING_BLOCK_LABEL_1035;
		Exception exception;
		exception;
		paused_list_mon.exit();
		throw exception;
		FileUtil.writeResilientConfigFile("downloads.config", map);
		managers_mon.exit();
		break MISSING_BLOCK_LABEL_1064;
		Exception exception1;
		exception1;
		managers_mon.exit();
		throw exception1;
	}

	public TRTrackerScraper getTrackerScraper()
	{
		return trackerScraper;
	}

	public GlobalManagerStats getStats()
	{
		return stats;
	}

	public boolean contains(DownloadManager manager)
	{
		if (managers_cow != null && manager != null)
			return managers_cow.contains(manager);
		else
			return false;
	}

	public int getIndexOf(DownloadManager manager)
	{
		if (managers_cow != null && manager != null)
			return managers_cow.indexOf(manager);
		else
			return -1;
	}

	public boolean isMoveableUp(DownloadManager manager)
	{
		if (manager.isDownloadComplete(false) && COConfigurationManager.getIntParameter("StartStopManager_iRankType") != 0 && COConfigurationManager.getBooleanParameter("StartStopManager_bAutoReposition"))
			return false;
		else
			return manager.getPosition() > 1;
	}

	public int downloadManagerCount(boolean bCompleted)
	{
		int numInGroup = 0;
		Iterator it = managers_cow.iterator();
		do
		{
			if (!it.hasNext())
				break;
			DownloadManager dm = (DownloadManager)it.next();
			if (dm.isDownloadComplete(false) == bCompleted)
				numInGroup++;
		} while (true);
		return numInGroup;
	}

	public boolean isMoveableDown(DownloadManager manager)
	{
		boolean isCompleted = manager.isDownloadComplete(false);
		if (isCompleted && COConfigurationManager.getIntParameter("StartStopManager_iRankType") != 0 && COConfigurationManager.getBooleanParameter("StartStopManager_bAutoReposition"))
			return false;
		else
			return manager.getPosition() < downloadManagerCount(isCompleted);
	}

	public void moveUp(DownloadManager manager)
	{
		moveTo(manager, manager.getPosition() - 1);
	}

	public void moveDown(DownloadManager manager)
	{
		moveTo(manager, manager.getPosition() + 1);
	}

	public void moveTop(DownloadManager manager[])
	{
		managers_mon.enter();
		int newPosition = 1;
		for (int i = 0; i < manager.length; i++)
			moveTo(manager[i], newPosition++);

		managers_mon.exit();
		break MISSING_BLOCK_LABEL_56;
		Exception exception;
		exception;
		managers_mon.exit();
		throw exception;
	}

	public void moveEnd(DownloadManager manager[])
	{
		managers_mon.enter();
		int endPosComplete = 0;
		int endPosIncomplete = 0;
		for (int j = 0; j < managers_cow.size(); j++)
		{
			DownloadManager dm = (DownloadManager)managers_cow.get(j);
			if (dm.isDownloadComplete(false))
				endPosComplete++;
			else
				endPosIncomplete++;
		}

		for (int i = manager.length - 1; i >= 0; i--)
		{
			if (manager[i].isDownloadComplete(false) && endPosComplete > 0)
			{
				moveTo(manager[i], endPosComplete--);
				continue;
			}
			if (endPosIncomplete > 0)
				moveTo(manager[i], endPosIncomplete--);
		}

		managers_mon.exit();
		break MISSING_BLOCK_LABEL_157;
		Exception exception;
		exception;
		managers_mon.exit();
		throw exception;
	}

	public void moveTo(DownloadManager manager, int newPosition)
	{
		boolean curCompleted;
		curCompleted = manager.isDownloadComplete(false);
		if (newPosition < 1 || newPosition > downloadManagerCount(curCompleted))
			return;
		managers_mon.enter();
		int curPosition = manager.getPosition();
		if (newPosition > curPosition)
		{
			int numToMove = newPosition - curPosition;
			for (int i = 0; i < managers_cow.size(); i++)
			{
				DownloadManager dm = (DownloadManager)managers_cow.get(i);
				boolean dmCompleted = dm.isDownloadComplete(false);
				if (dmCompleted != curCompleted)
					continue;
				int dmPosition = dm.getPosition();
				if (dmPosition <= curPosition || dmPosition > newPosition)
					continue;
				dm.setPosition(dmPosition - 1);
				if (--numToMove <= 0)
					break;
			}

			manager.setPosition(newPosition);
		} else
		if (newPosition < curPosition && curPosition > 1)
		{
			int numToMove = curPosition - newPosition;
			for (int i = 0; i < managers_cow.size(); i++)
			{
				DownloadManager dm = (DownloadManager)managers_cow.get(i);
				boolean dmCompleted = dm.isDownloadComplete(false);
				int dmPosition = dm.getPosition();
				if (dmCompleted != curCompleted || dmPosition < newPosition || dmPosition >= curPosition)
					continue;
				dm.setPosition(dmPosition + 1);
				if (--numToMove <= 0)
					break;
			}

			manager.setPosition(newPosition);
		}
		managers_mon.exit();
		break MISSING_BLOCK_LABEL_305;
		Exception exception;
		exception;
		managers_mon.exit();
		throw exception;
	}

	public void fixUpDownloadManagerPositions()
	{
		managers_mon.enter();
		int posComplete = 1;
		int posIncomplete = 1;
		Collections.sort(managers_cow, new Comparator() {

			final GlobalManagerImpl this$0;

			public final int compare(Object a, Object b)
			{
				int i = ((DownloadManager)a).getPosition() - ((DownloadManager)b).getPosition();
				if (i != 0)
					return i;
				if (((DownloadManager)a).isPersistent())
					return 1;
				return !((DownloadManager)b).isPersistent() ? 0 : -1;
			}

			
			{
				this$0 = GlobalManagerImpl.this;
				super();
			}
		});
		for (int i = 0; i < managers_cow.size(); i++)
		{
			DownloadManager dm = (DownloadManager)managers_cow.get(i);
			if (dm.isDownloadComplete(false))
				dm.setPosition(posComplete++);
			else
				dm.setPosition(posIncomplete++);
		}

		managers_mon.exit();
		break MISSING_BLOCK_LABEL_120;
		Exception exception;
		exception;
		managers_mon.exit();
		throw exception;
	}

	protected void informDestroyed()
	{
		if (destroyed)
		{
			return;
		} else
		{
			destroyed = true;
			listeners.dispatch(4, null, true);
			return;
		}
	}

⌨️ 快捷键说明

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