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