📄 totorrentimpl.java
字号:
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 + -