📄 downloadmanagercontroller.java
字号:
else
if (now - activation_count_time > 0x927c0L)
activation_count = 0;
return activation_count;
}
public PeerManagerRegistration getPeerManagerRegistration()
{
return peer_manager_registration;
}
public boolean isForceStart()
{
return force_start;
}
public void setForceStart(boolean _force_start)
{
state_mon.enter();
if (force_start != _force_start)
{
force_start = _force_start;
int state = getState();
if (force_start && (state == 70 || state == 75))
setState(0, false);
}
state_mon.exit();
break MISSING_BLOCK_LABEL_70;
Exception exception;
exception;
state_mon.exit();
throw exception;
download_manager.informStateChanged();
return;
}
protected void setFailed(String reason)
{
if (reason != null)
errorDetail = reason;
stopIt(100, false, false);
}
public boolean filesExist(boolean expected_to_be_allocated)
{
DiskManagerFileInfo files[];
int i;
if (!expected_to_be_allocated && !download_manager.isDataAlreadyAllocated())
return false;
DiskManager dm = getDiskManager();
if (dm != null)
return dm.filesExist();
fileFacadeSet.makeSureFilesFacadeFilled(false);
files = fileFacadeSet.getFiles();
i = 0;
_L3:
if (i >= files.length) goto _L2; else goto _L1
_L1:
DiskManagerFileInfo fileInfo;
File file;
fileInfo = files[i];
if (fileInfo.isSkipped())
continue; /* Loop/switch isn't completed */
file = fileInfo.getFile(true);
if (file.exists())
break MISSING_BLOCK_LABEL_172;
if (!download_manager.getTorrent().isSimpleTorrent())
{
File save_path = download_manager.getAbsoluteSaveLocation();
if (FileUtil.isAncestorOf(save_path, file) && !save_path.exists())
file = save_path;
}
setFailed((new StringBuilder()).append(MessageText.getString("DownloadManager.error.datamissing")).append(" ").append(file).toString());
return false;
if (fileInfo.getLength() >= file.length() || COConfigurationManager.getBooleanParameter("File.truncate.if.too.large"))
continue; /* Loop/switch isn't completed */
setFailed((new StringBuilder()).append(MessageText.getString("DownloadManager.error.badsize")).append(" ").append(file).append("(").append(fileInfo.getLength()).append("/").append(file.length()).append(")").toString());
return false;
Exception e;
e;
setFailed(e.getMessage());
return false;
i++;
goto _L3
_L2:
return true;
}
public DiskManagerFileInfoSet getDiskManagerFileInfoSet()
{
fileFacadeSet.makeSureFilesFacadeFilled(false);
return fileFacadeSet;
}
/**
* @deprecated Method getDiskManagerFileInfo is deprecated
*/
public DiskManagerFileInfo[] getDiskManagerFileInfo()
{
fileFacadeSet.makeSureFilesFacadeFilled(false);
return fileFacadeSet.getFiles();
}
protected void fileInfoChanged()
{
fileFacadeSet.makeSureFilesFacadeFilled(true);
}
protected void filePrioritiesChanged(List files)
{
if (!cached_values_set)
fileFacadeSet.makeSureFilesFacadeFilled(false);
if (!cached_has_dnd_files && files.size() == 1 && !((DiskManagerFileInfo)files.get(0)).isSkipped())
{
return;
} else
{
fileFacadeSet.makeSureFilesFacadeFilled(false);
calculateCompleteness(fileFacadeSet.facadeFiles);
return;
}
}
protected void calculateCompleteness(DiskManagerFileInfo active[])
{
boolean complete_excluding_dnd = true;
boolean has_dnd_files = false;
int i = 0;
do
{
if (i >= active.length)
break;
DiskManagerFileInfo file = active[i];
if (file.isSkipped())
has_dnd_files = true;
else
if (file.getDownloaded() != file.getLength())
complete_excluding_dnd = false;
if (has_dnd_files && !complete_excluding_dnd)
break;
i++;
} while (true);
cached_complete_excluding_dnd = complete_excluding_dnd;
cached_has_dnd_files = has_dnd_files;
cached_values_set = true;
DownloadManagerState state = download_manager.getDownloadState();
long flags = (cached_complete_excluding_dnd ? STATE_FLAG_COMPLETE_NO_DND : 0L) | (cached_has_dnd_files ? STATE_FLAG_HASDND : 0L);
state.setLongParameter("dndflags", flags);
}
protected boolean isDownloadComplete(boolean bIncludeDND)
{
if (!cached_values_set)
fileFacadeSet.makeSureFilesFacadeFilled(false);
if (!cached_has_dnd_files)
return stats.getDownloadCompleted(false) == 1000;
DiskManager dm = getDiskManager();
if (dm != null)
{
int dm_state = dm.getState();
if (dm_state == 4)
{
long remaining = bIncludeDND ? dm.getRemaining() : dm.getRemainingExcludingDND();
return remaining == 0L;
}
}
if (bIncludeDND)
return false;
else
return cached_complete_excluding_dnd;
}
protected PEPeerManager getPeerManager()
{
return peer_manager;
}
protected DiskManager getDiskManager()
{
return disk_manager_use_accessors;
}
protected String getErrorDetail()
{
return errorDetail;
}
protected void setDiskManager(DiskManager new_disk_manager, DiskManagerListener new_disk_manager_listener)
{
if (new_disk_manager != null)
new_disk_manager.setPieceCheckingEnabled(piece_checking_enabled);
disk_listeners_mon.enter();
DiskManager old_disk_manager = disk_manager_use_accessors;
if (old_disk_manager != null && disk_manager_listener_use_accessors != null)
old_disk_manager.removeListener(disk_manager_listener_use_accessors);
disk_manager_use_accessors = new_disk_manager;
disk_manager_listener_use_accessors = new_disk_manager_listener;
if (new_disk_manager != null)
new_disk_manager.addListener(new_disk_manager_listener);
fileInfoChanged();
if (new_disk_manager == null && old_disk_manager != null)
disk_listeners.dispatch(2, old_disk_manager);
else
if (new_disk_manager != null && old_disk_manager == null)
disk_listeners.dispatch(1, new_disk_manager);
else
Debug.out((new StringBuilder()).append("inconsistent DiskManager state - ").append(new_disk_manager).append("/").append(old_disk_manager).toString());
disk_listeners_mon.exit();
break MISSING_BLOCK_LABEL_165;
Exception exception;
exception;
disk_listeners_mon.exit();
throw exception;
}
public void addDiskListener(DownloadManagerDiskListener listener)
{
disk_listeners_mon.enter();
disk_listeners.addListener(listener);
DiskManager dm = getDiskManager();
if (dm != null)
disk_listeners.dispatch(listener, 1, dm);
disk_listeners_mon.exit();
break MISSING_BLOCK_LABEL_54;
Exception exception;
exception;
disk_listeners_mon.exit();
throw exception;
}
public void removeDiskListener(DownloadManagerDiskListener listener)
{
disk_listeners_mon.enter();
disk_listeners.removeListener(listener);
disk_listeners_mon.exit();
break MISSING_BLOCK_LABEL_35;
Exception exception;
exception;
disk_listeners_mon.exit();
throw exception;
}
public long getDiskListenerCount()
{
return disk_listeners.size();
}
public String getDisplayName()
{
return download_manager.getDisplayName();
}
public int getUploadRateLimitBytesPerSecond()
{
return download_manager.getEffectiveUploadRateLimitBytesPerSecond();
}
public int getDownloadRateLimitBytesPerSecond()
{
return stats.getDownloadRateLimitBytesPerSecond();
}
public int getMaxUploads()
{
return download_manager.getEffectiveMaxUploads();
}
public int getMaxConnections()
{
int result;
if (download_manager.isMaxConnectionsWhenSeedingEnabled() && isStateSeeding())
result = download_manager.getMaxConnectionsWhenSeeding();
else
result = download_manager.getMaxConnections();
return result;
}
public int getMaxSeedConnections()
{
return download_manager.getMaxSeedConnections();
}
public boolean isExtendedMessagingEnabled()
{
return download_manager.isExtendedMessagingEnabled();
}
public boolean isPeerExchangeEnabled()
{
return download_manager.getDownloadState().isPeerSourceEnabled("PeerExchange");
}
public int getCryptoLevel()
{
return download_manager.getCryptoLevel();
}
public boolean isPeriodicRescanEnabled()
{
return download_manager.getDownloadState().getFlag(2L);
}
public TRTrackerScraperResponse getTrackerScrapeResponse()
{
return download_manager.getTrackerScrapeResponse();
}
public String getTrackerClientExtensions()
{
return download_manager.getDownloadState().getTrackerClientExtensions();
}
public void setTrackerRefreshDelayOverrides(int percent)
{
download_manager.setTrackerRefreshDelayOverrides(percent);
}
public boolean isNATHealthy()
{
return download_manager.getNATStatus() == 1;
}
public void addPeer(PEPeer peer)
{
download_manager.addPeer(peer);
}
public void removePeer(PEPeer peer)
{
download_manager.removePeer(peer);
}
public void addPiece(PEPiece piece)
{
download_manager.addPiece(piece);
}
public void removePiece(PEPiece piece)
{
download_manager.removePiece(piece);
}
public void discarded(PEPeer peer, int bytes)
{
if (global_stats != null)
global_stats.discarded(bytes);
}
public void protocolBytesReceived(PEPeer peer, int bytes)
{
if (global_stats != null)
global_stats.protocolBytesReceived(bytes, peer.isLANLocal());
}
public void dataBytesReceived(PEPeer peer, int bytes)
{
if (global_stats != null)
global_stats.dataBytesReceived(bytes, peer.isLANLocal());
}
public void protocolBytesSent(PEPeer peer, int bytes)
{
if (global_stats != null)
global_stats.protocolBytesSent(bytes, peer.isLANLocal());
}
public void dataBytesSent(PEPeer peer, int bytes)
{
if (global_stats != null)
global_stats.dataBytesSent(bytes, peer.isLANLocal());
}
public int getPosition()
{
return download_manager.getPosition();
}
public void addHTTPSeed(String address, int port)
{
ExternalSeedPlugin plugin = getExternalSeedPlugin();
try
{
if (plugin != null)
{
Map config = new HashMap();
List urls = new ArrayList();
String seed_url = (new StringBuilder()).append("http://").append(UrlUtils.convertIPV6Host(address)).append(":").append(port).append("/webseed").toString();
urls.add(seed_url.getBytes());
config.put("httpseeds", urls);
Map params = new HashMap();
params.put("supports_503", new Long(0L));
params.put("transient", new Long(1L));
config.put("httpseeds-params", params);
plugin.addSeed(DownloadManagerImpl.getDownloadStatic(download_manager), config);
}
}
catch (Throwable e)
{
Debug.printStackTrace(e);
}
}
public void priorityConnectionChanged(boolean added)
{
synchronized (this)
{
if (added)
priority_connection_count++;
else
priority_connection_count--;
}
}
public boolean hasPriorityConnection()
{
DownloadManagerController downloadmanagercontroller = this;
JVM INSTR monitorenter ;
return priority_connection_count > 0L;
Exception exception;
exception;
throw exception;
}
public String getDescription()
{
return download_manager.getDisplayName();
}
public LogRelation getLogRelation()
{
return this;
}
public String getRelationText()
{
return download_manager.getRelationText();
}
public Object[] getQueryableInterfaces()
{
List interfaces = new ArrayList();
Object intf[] = download_manager.getQueryableInterfaces();
for (int i = 0; i < intf.length; i++)
interfaces.add(intf[i]);
interfaces.add(download_manager);
DiskManager dm = getDiskManager();
if (dm != null)
interfaces.add(dm);
return interfaces.toArray();
}
public void generateEvidence(IndentWriter writer)
{
writer.println("DownloadManager Controller:");
writer.indent();
writer.println((new StringBuilder()).append("cached info: complete w/o DND=").append(cached_complete_excluding_dnd).append("; hasDND? ").append(cached_has_dnd_files).toString());
writer.println((new StringBuilder()).append("Complete w/DND? ").append(isDownloadComplete(true)).append("; w/o DND? ").append(isDownloadComplete(false)).toString());
writer.println((new StringBuilder()).append("filesFacade length: ").append(fileFacadeSet.nbFiles()).toString());
if (force_start)
writer.println("Force Start");
writer.println((new StringBuilder()).append("FilesExist? ").append(filesExist(download_manager.isDataAlreadyAllocated())).toString());
writer.exdent();
break MISSING_BLOCK_LABEL_185;
Exception exception;
exception;
writer.exdent();
throw exception;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -