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

📄 totorrentimpl.java

📁 java 文件下载器。可自定义
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
			setHashFromInfo(info);
		}
		return torrent_hash;
	}

	public HashWrapper getHashWrapper()
		throws TOTorrentException
	{
		if (torrent_hash_wrapper == null)
			getHash();
		return torrent_hash_wrapper;
	}

	public boolean hasSameHashAs(TOTorrent other)
	{
		byte other_hash[] = other.getHash();
		return Arrays.equals(getHash(), other_hash);
		TOTorrentException e;
		e;
		Debug.printStackTrace(e);
		return false;
	}

	protected void setHashFromInfo(Map info)
		throws TOTorrentException
	{
		try
		{
			if (torrent_hash_override == null)
			{
				SHA1Hasher s = new SHA1Hasher();
				torrent_hash = s.calculateHash(BEncoder.encode(info));
			} else
			{
				torrent_hash = torrent_hash_override;
			}
			torrent_hash_wrapper = new HashWrapper(torrent_hash);
		}
		catch (Throwable e)
		{
			throw new TOTorrentException((new StringBuilder()).append("Failed to calculate hash: ").append(Debug.getNestedExceptionMessage(e)).toString(), 8);
		}
	}

	public void setHashOverride(byte hash[])
		throws TOTorrentException
	{
		if (torrent_hash_override != null)
			if (Arrays.equals(hash, torrent_hash_override))
				return;
			else
				throw new TOTorrentException("Hash override can only be set once", 8);
		if (!TorrentUtils.isDecentralised(announce_url))
		{
			throw new TOTorrentException("Hash override can only be set on decentralised torrents", 8);
		} else
		{
			torrent_hash_override = hash;
			torrent_hash = null;
			getHash();
			return;
		}
	}

	protected byte[] getHashOverride()
	{
		return torrent_hash_override;
	}

	public void setPrivate(boolean _private_torrent)
		throws TOTorrentException
	{
		additional_info_properties.put("private", new Long(_private_torrent ? 1L : 0L));
		torrent_hash = null;
		getHash();
	}

	public boolean getPrivate()
	{
		Object o = additional_info_properties.get("private");
		if (o instanceof Long)
			return ((Long)o).intValue() != 0;
		else
			return false;
	}

	public TOTorrentAnnounceURLGroup getAnnounceURLGroup()
	{
		return announce_group;
	}

	protected void addTorrentAnnounceURLSet(URL urls[])
	{
		announce_group.addSet(new TOTorrentAnnounceURLSetImpl(this, urls));
	}

	public long getSize()
	{
		long res = 0L;
		for (int i = 0; i < files.length; i++)
			res += files[i].getLength();

		return res;
	}

	public long getPieceLength()
	{
		return piece_length;
	}

	protected void setPieceLength(long _length)
	{
		piece_length = _length;
	}

	public int getNumberOfPieces()
	{
		if (number_of_pieces == 0)
			number_of_pieces = (int)((getSize() + (piece_length - 1L)) / piece_length);
		return number_of_pieces;
	}

	public byte[][] getPieces()
	{
		return pieces;
	}

	public void setPieces(byte _pieces[][])
	{
		pieces = _pieces;
	}

	public TOTorrentFile[] getFiles()
	{
		return files;
	}

	protected void setFiles(TOTorrentFileImpl _files[])
	{
		files = _files;
	}

	protected boolean getSimpleTorrent()
	{
		return simple_torrent;
	}

	protected void setSimpleTorrent(boolean _simple_torrent)
	{
		simple_torrent = _simple_torrent;
	}

	protected Map getAdditionalProperties()
	{
		return additional_properties;
	}

	public void setAdditionalStringProperty(String name, String value)
	{
		try
		{
			setAdditionalByteArrayProperty(name, writeStringToMetaData(value));
		}
		catch (TOTorrentException e)
		{
			Debug.printStackTrace(e);
		}
	}

	public String getAdditionalStringProperty(String name)
	{
		return readStringFromMetaData(getAdditionalByteArrayProperty(name));
		TOTorrentException e;
		e;
		Debug.printStackTrace(e);
		return null;
	}

	public void setAdditionalByteArrayProperty(String name, byte value[])
	{
		additional_properties.put(name, value);
	}

	public void setAdditionalProperty(String name, Object value)
	{
		if (value instanceof String)
			setAdditionalStringProperty(name, (String)value);
		else
			additional_properties.put(name, value);
	}

	public byte[] getAdditionalByteArrayProperty(String name)
	{
		Object obj = additional_properties.get(name);
		if (obj instanceof byte[])
			return (byte[])(byte[])obj;
		else
			return null;
	}

	public void setAdditionalLongProperty(String name, Long value)
	{
		additional_properties.put(name, value);
	}

	public Long getAdditionalLongProperty(String name)
	{
		Object obj = additional_properties.get(name);
		if (obj instanceof Long)
			return (Long)obj;
		else
			return null;
	}

	public void setAdditionalListProperty(String name, List value)
	{
		additional_properties.put(name, value);
	}

	public List getAdditionalListProperty(String name)
	{
		Object obj = additional_properties.get(name);
		if (obj instanceof List)
			return (List)obj;
		else
			return null;
	}

	public void setAdditionalMapProperty(String name, Map value)
	{
		additional_properties.put(name, value);
	}

	public Map getAdditionalMapProperty(String name)
	{
		Object obj = additional_properties.get(name);
		if (obj instanceof Map)
			return (Map)obj;
		else
			return null;
	}

	public Object getAdditionalProperty(String name)
	{
		return additional_properties.get(name);
	}

	public void removeAdditionalProperty(String name)
	{
		additional_properties.remove(name);
	}

	public void removeAdditionalProperties()
	{
		Map new_props = new HashMap();
		Iterator it = additional_properties.keySet().iterator();
		do
		{
			if (!it.hasNext())
				break;
			String key = (String)it.next();
			if (TK_ADDITIONAL_OK_ATTRS.contains(key))
				new_props.put(key, additional_properties.get(key));
		} while (true);
		additional_properties = new_props;
	}

	protected void addAdditionalProperty(String name, Object value)
	{
		additional_properties.put(name, value);
	}

	protected void addAdditionalInfoProperty(String name, Object value)
	{
		additional_info_properties.put(name, value);
	}

	protected Map getAdditionalInfoProperties()
	{
		return additional_info_properties;
	}

	protected String readStringFromMetaData(Map meta_data, String name)
		throws TOTorrentException
	{
		Object obj = meta_data.get(name);
		if (obj instanceof byte[])
			return readStringFromMetaData((byte[])(byte[])obj);
		else
			return null;
	}

	protected String readStringFromMetaData(byte value[])
		throws TOTorrentException
	{
		if (value == null)
			return null;
		return new String(value, "UTF8");
		UnsupportedEncodingException e;
		e;
		throw new TOTorrentException((new StringBuilder()).append("Unsupported encoding for '").append(value).append("'").toString(), 7);
	}

	protected void writeStringToMetaData(Map meta_data, String name, String value)
		throws TOTorrentException
	{
		meta_data.put(name, writeStringToMetaData(value));
	}

	protected byte[] writeStringToMetaData(String value)
		throws TOTorrentException
	{
		return value.getBytes("UTF8");
		UnsupportedEncodingException e;
		e;
		throw new TOTorrentException((new StringBuilder()).append("Unsupported encoding for '").append(value).append("'").toString(), 7);
	}

	protected URL anonymityTransform(URL url)
	{
		return url;
	}

	public void print()
	{
		try
		{
			byte hash[] = getHash();
			System.out.println((new StringBuilder()).append("name = ").append(torrent_name).toString());
			System.out.println((new StringBuilder()).append("announce url = ").append(announce_url).toString());
			System.out.println((new StringBuilder()).append("announce group = ").append(announce_group.getAnnounceURLSets().length).toString());
			System.out.println((new StringBuilder()).append("creation date = ").append(creation_date).toString());
			System.out.println((new StringBuilder()).append("creation by = ").append(created_by).toString());
			System.out.println((new StringBuilder()).append("comment = ").append(comment).toString());
			System.out.println((new StringBuilder()).append("hash = ").append(ByteFormatter.nicePrint(hash)).toString());
			System.out.println((new StringBuilder()).append("piece length = ").append(getPieceLength()).toString());
			System.out.println((new StringBuilder()).append("pieces = ").append(getNumberOfPieces()).toString());
			for (Iterator info_it = additional_info_properties.keySet().iterator(); info_it.hasNext();)
			{
				String key = (String)info_it.next();
				Object value = additional_info_properties.get(key);
				try
				{
					System.out.println((new StringBuilder()).append("info prop '").append(key).append("' = '").append((value instanceof byte[]) ? new String((byte[])(byte[])value, "UTF8") : value.toString()).append("'").toString());
				}
				catch (UnsupportedEncodingException e)
				{
					System.out.println((new StringBuilder()).append("info prop '").append(key).append("' = unsupported encoding!!!!").toString());
				}
			}

			for (Iterator it = additional_properties.keySet().iterator(); it.hasNext();)
			{
				String key = (String)it.next();
				Object value = additional_properties.get(key);
				try
				{
					System.out.println((new StringBuilder()).append("prop '").append(key).append("' = '").append((value instanceof byte[]) ? new String((byte[])(byte[])value, "UTF8") : value.toString()).append("'").toString());
				}
				catch (UnsupportedEncodingException e)
				{
					System.out.println((new StringBuilder()).append("prop '").append(key).append("' = unsupported encoding!!!!").toString());
				}
			}

			if (pieces == null)
			{
				System.out.println("\tpieces = null");
			} else
			{
				for (int i = 0; i < pieces.length; i++)
					System.out.println((new StringBuilder()).append("\t").append(ByteFormatter.nicePrint(pieces[i])).toString());

			}
			for (int i = 0; i < files.length; i++)
			{
				byte path_comps[][] = files[i].getPathComponents();
				String path_str = "";
				for (int j = 0; j < path_comps.length; j++)
					try
					{
						path_str = (new StringBuilder()).append(path_str).append(j != 0 ? File.separator : "").append(new String(path_comps[j], "UTF8")).toString();
					}
					catch (UnsupportedEncodingException e)
					{
						System.out.println("file - unsupported encoding!!!!");
					}

				System.out.println((new StringBuilder()).append("\t").append(path_str).append(" (").append(files[i].getLength()).append(")").toString());
			}

		}
		catch (TOTorrentException e)
		{
			Debug.printStackTrace(e);
		}
	}

	public AEMonitor getMonitor()
	{
		return this_mon;
	}

	public String getRelationText()
	{
		return (new StringBuilder()).append("Torrent: '").append(new String(torrent_name)).append("'").toString();
	}

	public Object[] getQueryableInterfaces()
	{
		return (new Object[] {
			AzureusCoreFactory.getSingleton().getGlobalManager().getDownloadManager(this)
		});
		Exception e;
		e;
		return null;
	}

}

⌨️ 快捷键说明

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