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

📄 downloadmanagerstateimpl.java

📁 java 文件下载器。可自定义
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
		class_mon.exit();
		throw exception;
	}

	protected void mergeTorrentDetails(TOTorrent other_torrent)
	{
		try
		{
			boolean write = TorrentUtils.mergeAnnounceURLs(other_torrent, torrent);
			if (write)
			{
				save();
				if (download_manager != null)
				{
					TRTrackerAnnouncer client = download_manager.getTrackerClient();
					if (client != null)
						client.resetTrackerUrl(false);
				}
			}
		}
		catch (Throwable e)
		{
			Debug.printStackTrace(e);
		}
	}

	public void setFlag(long flag, boolean set)
	{
		long old_value = getLongAttribute("flags");
		long new_value;
		if (set)
			new_value = old_value | flag;
		else
			new_value = old_value & ~flag;
		if (old_value != new_value)
			setLongAttribute("flags", new_value);
	}

	public boolean getFlag(long flag)
	{
		long value = getLongAttribute("flags");
		return (value & flag) != 0L;
	}

	public boolean parameterExists(String name)
	{
		return parameters.containsKey(name);
	}

	public void setParameterDefault(String name)
	{
		Object value;
		this_mon.enter();
		value = parameters.get(name);
		if (value == null)
		{
			this_mon.exit();
			return;
		}
		parameters = new LightHashMap(parameters);
		parameters.remove(name);
		this_mon.exit();
		break MISSING_BLOCK_LABEL_76;
		Exception exception;
		exception;
		this_mon.exit();
		throw exception;
		setMapAttribute("parameters", parameters);
		return;
	}

	public long getLongParameter(String name)
	{
		Object value;
		int def;
		this_mon.enter();
		value = parameters.get(name);
		if (value != null)
			break MISSING_BLOCK_LABEL_272;
		value = default_parameters.get(name);
		if (value != null)
			break MISSING_BLOCK_LABEL_74;
		Debug.out((new StringBuilder()).append("Unknown parameter '").append(name).append("' - must be defined in DownloadManagerState").toString());
		def = 0L;
		this_mon.exit();
		return def;
		if (name == "max.uploads.when.seeding.enabled")
		{
			if (COConfigurationManager.getBooleanParameter("enable.seedingonly.maxuploads"))
				value = new Boolean(true);
		} else
		if (name == "max.uploads.when.seeding")
		{
			def = COConfigurationManager.getIntParameter("Max Uploads Seeding");
			value = new Integer(def);
		} else
		if (name == "max.uploads")
		{
			def = COConfigurationManager.getIntParameter("Max Uploads");
			value = new Integer(def);
		} else
		if (name == "max.peers")
		{
			def = COConfigurationManager.getIntParameter("Max.Peer.Connections.Per.Torrent");
			value = new Integer(def);
		} else
		if (name == "max.peers.when.seeding.enabled")
		{
			if (COConfigurationManager.getBooleanParameter("Max.Peer.Connections.Per.Torrent.When.Seeding.Enable"))
				value = new Boolean(true);
		} else
		if (name == "max.peers.when.seeding")
		{
			def = COConfigurationManager.getIntParameter("Max.Peer.Connections.Per.Torrent.When.Seeding");
			value = new Integer(def);
		} else
		if (name == "max.seeds")
			value = new Integer(COConfigurationManager.getIntParameter("Max Seeds Per Torrent"));
		else
		if (name == "rand")
		{
			long rand = random.nextLong();
			setLongParameter(name, rand);
			value = new Long(rand);
		}
		if (!(value instanceof Boolean))
			break MISSING_BLOCK_LABEL_305;
		rand = ((Boolean)value).booleanValue() ? 1 : 0;
		this_mon.exit();
		return rand;
		if (!(value instanceof Integer))
			break MISSING_BLOCK_LABEL_329;
		rand = ((Integer)value).longValue();
		this_mon.exit();
		return rand;
		if (!(value instanceof Long))
			break MISSING_BLOCK_LABEL_353;
		rand = ((Long)value).longValue();
		this_mon.exit();
		return rand;
		Debug.out((new StringBuilder()).append("Invalid parameter value for '").append(name).append("' - ").append(value).toString());
		rand = 0L;
		this_mon.exit();
		return rand;
		Exception exception;
		exception;
		this_mon.exit();
		throw exception;
	}

	public void setLongParameter(String name, long value)
	{
		Object default_value = default_parameters.get(name);
		if (default_value == null)
			Debug.out((new StringBuilder()).append("Unknown parameter '").append(name).append("' - must be defined in DownloadManagerState").toString());
		this_mon.enter();
		parameters = new LightHashMap(parameters);
		parameters.put(name, new Long(value));
		setMapAttribute("parameters", parameters);
		this_mon.exit();
		break MISSING_BLOCK_LABEL_116;
		Exception exception;
		exception;
		this_mon.exit();
		throw exception;
	}

	public int getIntParameter(String name)
	{
		return (int)getLongParameter(name);
	}

	public void setIntParameter(String name, int value)
	{
		setLongParameter(name, value);
	}

	public boolean getBooleanParameter(String name)
	{
		return getLongParameter(name) != 0L;
	}

	public void setBooleanParameter(String name, boolean value)
	{
		setLongParameter(name, value ? 1L : 0L);
	}

	public void setAttribute(String name, String value)
	{
		if (name.equals("category"))
		{
			if (value == null)
			{
				setCategory(null);
			} else
			{
				Category cat = CategoryManager.getCategory(value);
				if (cat == null)
					cat = CategoryManager.createCategory(value);
				setCategory(cat);
			}
			return;
		}
		if (name.equals("relativepath") && value.length() > 0)
		{
			File relative_path_file = new File(value);
			relative_path_file = DownloadManagerDefaultPaths.normaliseRelativePath(relative_path_file);
			value = relative_path_file != null ? relative_path_file.getPath() : "";
		}
		setStringAttribute(name, value);
	}

	public String getAttribute(String name)
	{
		if (name.equals("category"))
		{
			Category cat = getCategory();
			if (cat == null)
				return null;
			if (cat == CategoryManager.getCategory(2))
				return null;
			else
				return cat.getName();
		} else
		{
			return getStringAttribute(name);
		}
	}

	public Category getCategory()
	{
		return category;
	}

	public void setCategory(Category cat)
	{
		if (cat == CategoryManager.getCategory(2))
			cat = null;
		if (cat == category)
			return;
		if (cat != null && cat.getType() != 0)
			cat = null;
		Category oldCategory = category != null ? category : CategoryManager.getCategory(2);
		category = cat;
		if (oldCategory != null)
			oldCategory.removeManager(this);
		if (category != null)
			category.addManager(this);
		if (category != null && category.getType() == 0)
			setStringAttribute("category", category.getName());
		else
			setStringAttribute("category", null);
	}

	public String getTrackerClientExtensions()
	{
		return getStringAttribute("trackerclientextensions");
	}

	public void setTrackerClientExtensions(String value)
	{
		setStringAttribute("trackerclientextensions", value);
	}

	public String getDisplayName()
	{
		return getStringAttribute("displayname");
	}

	public void setDisplayName(String value)
	{
		setStringAttribute("displayname", value);
	}

	public String getUserComment()
	{
		return getStringAttribute("comment");
	}

	public void setUserComment(String value)
	{
		setStringAttribute("comment", value);
	}

	public String getRelativeSavePath()
	{
		return getStringAttribute("relativepath");
	}

	public String getPrimaryFile()
	{
		String sPrimary = getStringAttribute("primaryfile");
		if (sPrimary == null || sPrimary.length() == 0 || firstPrimaryFileRead && !(new File(sPrimary)).exists() && download_manager.getStats().getDownloadCompleted(true) != 0)
		{
			DiskManagerFileInfo fileInfo[] = download_manager.getDiskManagerFileInfo();
			if (fileInfo.length > 0)
			{
				int idxBiggest = -1;
				long lBiggest = -1L;
				for (int i = 0; i < fileInfo.length && i < 10; i++)
					if (!fileInfo[i].isSkipped() && fileInfo[i].getLength() > lBiggest)
					{
						lBiggest = fileInfo[i].getLength();
						idxBiggest = i;
					}

				if (idxBiggest >= 0)
					sPrimary = fileInfo[idxBiggest].getFile(true).getPath();
			}
		}
		if (sPrimary == null)
			sPrimary = "";
		if (firstPrimaryFileRead)
			firstPrimaryFileRead = false;
		setPrimaryFile(sPrimary);
		return sPrimary;
	}

	public void setPrimaryFile(String fileFullPath)
	{
		setStringAttribute("primaryfile", fileFullPath);
	}

	public String[] getNetworks()
	{
		List values = getListAttributeSupport("networks");
		List res = new ArrayList();
		for (int i = 0; i < values.size(); i++)
		{
			String nw = (String)values.get(i);
			for (int j = 0; j < AENetworkClassifier.AT_NETWORKS.length; j++)
			{
				String nn = AENetworkClassifier.AT_NETWORKS[j];
				if (nn.equals(nw))
					res.add(nn);
			}

		}

		String x[] = new String[res.size()];
		res.toArray(x);
		return x;
	}

	public boolean isNetworkEnabled(String network)
	{
		List values = getListAttributeSupport("networks");
		return values.contains(network);
	}

	public void setNetworks(String networks[])
	{
		if (networks == null)
			networks = new String[0];
		List l = new ArrayList();
		for (int i = 0; i < networks.length; i++)
			l.add(networks[i]);

		setListAttribute("networks", l);
	}

	public void setNetworkEnabled(String network, boolean enabled)
	{
		List values = getListAttributeSupport("networks");
		boolean alreadyEnabled = values.contains(network);
		List l = new ArrayList();
		if (enabled && !alreadyEnabled)
		{
			for (int i = 0; i < values.size(); i++)
				l.add(values.get(i));

			l.add(network);
			setListAttribute("networks", l);
		}
		if (!enabled && alreadyEnabled)
		{
			for (int i = 0; i < values.size(); i++)
				l.add(values.get(i));

			l.remove(network);
			setListAttribute("networks", l);
		}
	}

	public String[] getPeerSources()
	{
		List values = getListAttributeSupport("peersources");
		List res = new ArrayList();
		for (int i = 0; i < values.size(); i++)
		{
			String ps = (String)values.get(i);
			for (int j = 0; j < PEPeerSource.PS_SOURCES.length; j++)
			{
				String x = PEPeerSource.PS_SOURCES[j];
				if (x.equals(ps))
					res.add(x);
			}

		}

		String x[] = new String[res.size()];
		res.toArray(x);
		return x;
	}

	public boolean isPeerSourceEnabled(String peerSource)
	{
		List values = getListAttributeSupport("peersources");
		return values.contains(peerSource);
	}

	public boolean isPeerSourcePermitted(String peerSource)
	{
		if (peerSource.equals("DHT") && (TorrentUtils.getPrivate(torrent) || !TorrentUtils.getDHTBackupEnabled(torrent)))
			return false;
		if (peerSource.equals("PeerExchange") && TorrentUtils.getPrivate(torrent))
			return false;
		List values = getListAttributeSupport("peersourcesdenied");
		return values == null || !values.contains(peerSource);
	}

	public void setPeerSourcePermitted(String peerSource, boolean enabled)
	{
		if (!getFlag(32L))
		{
			Logger.log(new LogEvent(torrent, LOGID, (new StringBuilder()).append("Attempt to modify permitted peer sources denied as disabled '").append(TorrentUtils.getLocalisedName(torrent)).append("'").toString()));
			return;
		}
		if (!enabled)
			setPeerSourceEnabled(peerSource, false);
		List values = getListAttributeSupport("peersourcesdenied");
		if (values == null)
		{
			if (!enabled)
			{
				values = new ArrayList();
				values.add(peerSource);
				setListAttribute("peersourcesdenied", values);
			}
		} else
		{
			if (enabled)
				values.remove(peerSource);
			else
			if (!values.contains(peerSource))
				values.add(peerSource);
			setListAttribute("peersourcesdenied", values);
		}
	}

	public void setPeerSources(String ps[])
	{
		if (ps == null)
			ps = new String[0];
		List l = new ArrayList();
		for (int i = 0; i < ps.length; i++)
		{
			String p = ps[i];
			if (isPeerSourcePermitted(p))
				l.add(ps[i]);
		}

		setListAttribute("peersources", l);
	}

	public void setPeerSourceEnabled(String source, boolean enabled)
	{
		if (enabled && !isPeerSourcePermitted(source))
			return;
		List values = getListAttributeSupport("peersources");
		boolean alreadyEnabled = values.contains(source);
		List l = new ArrayList();
		if (enabled && !alreadyEnabled)
		{
			for (int i = 0; i < values.size(); i++)
				l.add(values.get(i));

			l.add(source);
			setListAttribute("peersources", l);
		}
		if (!enabled && alreadyEnabled)
		{
			for (int i = 0; i < values.size(); i++)
				l.add(values.get(i));

			l.remove(source);
			setListAttribute("peersources", l);
		}
	}

	public void setFileLink(File link_source, File link_destination)
	{
		CaseSensitiveFileMap links = getFileLinks();
		File existing = links.get(link_source);
		if (link_destination == null)
		{
			if (existing == null)
				return;
		} else
		if (existing != null && existing.equals(link_destination))
			return;
		links.put(link_source, link_destination);
		List list = new ArrayList();
		String str;
		for (Iterator it = links.keySetIterator(); it.hasNext(); list.add(str))
		{
			File source = (File)it.next();
			File target = links.get(source);
			str = (new StringBuilder()).append(source).append("\n").append(target != null ? target.toString() : "").toString();
		}

		setListAttribute("filelinks", list);
	}

	public void clearFileLinks()
	{
		CaseSensitiveFileMap links = getFileLinks();
		List list = new ArrayList();
		Iterator it = links.keySetIterator();
		boolean changed = false;
		String str;
		for (; it.hasNext(); list.add(str))
		{
			File source = (File)it.next();
			File target = links.get(source);
			if (target != null)
				changed = true;
			str = (new StringBuilder()).append(source).append("\n").toString();
		}

		if (changed)
			setListAttribute("filelinks", list);
	}

⌨️ 快捷键说明

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