📄 downloadmanagerimpl.java
字号:
open_for_seeding = false;
break MISSING_BLOCK_LABEL_184;
Exception exception;
exception;
open_for_seeding = false;
throw exception;
e;
setFailed(e);
}
public void setStateWaiting()
{
controller.setStateWaiting();
}
public void setStateFinishing()
{
controller.setStateFinishing();
}
public void setStateQueued()
{
controller.setStateQueued();
}
public int getState()
{
return controller.getState();
}
public int getSubState()
{
return controller.getSubState();
}
public boolean canForceRecheck()
{
if (getTorrent() == null)
return false;
else
return controller.canForceRecheck();
}
public void forceRecheck()
{
controller.forceRecheck(null);
}
public void forceRecheck(ForceRecheckListener l)
{
controller.forceRecheck(l);
}
public void setPieceCheckingEnabled(boolean enabled)
{
controller.setPieceCheckingEnabled(enabled);
}
public void resetFile(DiskManagerFileInfo file)
{
int state = getState();
if (state == 70 || state == 100)
DiskManagerFactory.clearResumeData(this, file);
else
Debug.out("Download not stopped");
}
public void recheckFile(DiskManagerFileInfo file)
{
int state = getState();
if (state == 70 || state == 100)
DiskManagerFactory.recheckFile(this, file);
else
Debug.out("Download not stopped");
}
public void startDownload()
{
controller.startDownload(getTrackerClient());
}
public void stopIt(int state_after_stopping, boolean remove_torrent, boolean remove_data)
{
download_manager_state.setLongAttribute("timestopped", SystemTime.getCurrentTime());
controller.stopIt(state_after_stopping, remove_torrent, remove_data);
download_manager_state.setActive(false);
break MISSING_BLOCK_LABEL_53;
Exception exception;
exception;
download_manager_state.setActive(false);
throw exception;
}
public boolean pause()
{
return globalManager.pauseDownload(this);
}
public boolean isPaused()
{
return globalManager.isPaused(this);
}
public void resume()
{
globalManager.resumeDownload(this);
}
public boolean getAssumedComplete()
{
return assumedComplete;
}
public boolean requestAssumedCompleteMode()
{
boolean bCompleteNoDND = controller.isDownloadComplete(false);
setAssumedComplete(bCompleteNoDND);
return bCompleteNoDND;
}
protected void setAssumedComplete(boolean _assumedComplete)
{
if (_assumedComplete)
{
long completedOn = download_manager_state.getLongParameter("stats.download.completed.time");
if (completedOn <= 0L)
download_manager_state.setLongParameter("stats.download.completed.time", SystemTime.getCurrentTime());
}
if (assumedComplete == _assumedComplete)
return;
assumedComplete = _assumedComplete;
if (!assumedComplete)
controller.setStateDownloading();
if (position != -1)
{
DownloadManager dms[] = {
this
};
position = globalManager.getDownloadManagers().size() + 1;
if (COConfigurationManager.getBooleanParameter("Newly Seeding Torrents Get First Priority"))
globalManager.moveTop(dms);
else
globalManager.moveEnd(dms);
globalManager.fixUpDownloadManagerPositions();
}
listeners.dispatch(3, ((Object) (new Object[] {
this, new Boolean(_assumedComplete)
})));
}
public int getNbSeeds()
{
PEPeerManager peerManager = controller.getPeerManager();
if (peerManager != null)
return peerManager.getNbSeeds();
else
return 0;
}
public int getNbPeers()
{
PEPeerManager peerManager = controller.getPeerManager();
if (peerManager != null)
return peerManager.getNbPeers();
else
return 0;
}
public String getTrackerStatus()
{
TRTrackerAnnouncer tc = getTrackerClient();
if (tc != null)
return tc.getStatusString();
if (torrent != null)
{
TRTrackerScraperResponse response = getTrackerScrapeResponse();
if (response != null)
return response.getStatusString();
}
return "";
}
public TRTrackerAnnouncer getTrackerClient()
{
return tracker_client;
}
public void setAnnounceResult(DownloadAnnounceResult result)
{
TRTrackerAnnouncer cl = getTrackerClient();
if (cl == null)
{
return;
} else
{
cl.setAnnounceResult(result);
return;
}
}
public void setScrapeResult(DownloadScrapeResult result)
{
if (torrent != null && result != null)
{
TRTrackerScraper scraper = globalManager.getTrackerScraper();
TRTrackerScraperResponse current_resp = getTrackerScrapeResponse();
URL target_url;
if (current_resp != null)
target_url = current_resp.getURL();
else
target_url = torrent.getAnnounceURL();
scraper.setScrape(torrent, target_url, result);
}
}
public int getNbPieces()
{
if (torrent == null)
return 0;
else
return torrent.getNumberOfPieces();
}
public int getTrackerTime()
{
TRTrackerAnnouncer tc = getTrackerClient();
if (tc != null)
return tc.getTimeUntilNextUpdate();
if (torrent != null)
{
TRTrackerScraperResponse response = getTrackerScrapeResponse();
if (response != null)
if (response.getStatus() == 3)
return -1;
else
return (int)((response.getNextScrapeStartTime() - SystemTime.getCurrentTime()) / 1000L);
}
return 60;
}
public TOTorrent getTorrent()
{
return torrent;
}
public File getSaveLocation()
{
File save_location = torrent_save_location;
if (save_location == cached_save_location)
return cached_save_location_result;
File res = download_manager_state.getFileLink(save_location);
if (res == null || res.equals(save_location))
res = save_location;
else
try
{
res = res.getCanonicalFile();
}
catch (Throwable e)
{
res = res.getAbsoluteFile();
}
cached_save_location = save_location;
cached_save_location_result = res;
return res;
}
public File getAbsoluteSaveLocation()
{
return torrent_save_location;
}
public void setTorrentSaveDir(String new_dir)
{
setTorrentSaveDir(new_dir, getAbsoluteSaveLocation().getName());
}
public void setTorrentSaveDir(String new_dir, String dl_name)
{
File old_location = torrent_save_location;
File new_location = new File(new_dir, dl_name);
if (new_location.equals(old_location))
return;
updateFileLinks(old_location, new_location);
torrent_save_location = new_location;
try
{
torrent_save_location = torrent_save_location.getCanonicalFile();
}
catch (Throwable e)
{
torrent_save_location = torrent_save_location.getAbsoluteFile();
}
Logger.log(new LogEvent(this, LogIDs.CORE, (new StringBuilder()).append("Torrent save directory changing from \"").append(old_location.getPath()).append("\" to \"").append(new_location.getPath()).toString()));
controller.fileInfoChanged();
}
public String getPieceLength()
{
if (torrent != null)
return DisplayFormatters.formatByteCountToKiBEtc(torrent.getPieceLength());
else
return "";
}
public String getTorrentFileName()
{
return torrentFileName;
}
public void setTorrentFileName(String string)
{
torrentFileName = string;
}
public void setTrackerScrapeResponse(TRTrackerScraperResponse response)
{
Object res[] = getActiveScrapeResponse();
URL active_url = (URL)res[1];
if (active_url != null && torrent != null)
torrent.setAnnounceURL(active_url);
if (response != null)
{
if (response.isValid())
{
int state = getState();
if (state == 100 || state == 70)
{
long minNextScrape = SystemTime.getCurrentTime() + (state != 100 ? 0x36ee80L : 0x6ddd00L);
if (response.getNextScrapeStartTime() < minNextScrape)
response.setNextScrapeStartTime(minNextScrape);
}
} else
if (response.getStatus() == 0)
{
int state = getState();
long minNextScrape;
if (state == 100 || state == 70)
{
minNextScrape = SystemTime.getCurrentTime() + (state != 100 ? 0x2bf20L : 0x927c0L);
} else
{
int sr = getStats().getShareRatio();
minNextScrape = SystemTime.getCurrentTime() + (long)((sr <= 10000 ? sr + 1000 : 10000) * 60);
}
if (response.getNextScrapeStartTime() < minNextScrape)
response.setNextScrapeStartTime(minNextScrape);
}
tracker_listeners.dispatch(2, response);
}
}
public TRTrackerScraperResponse getTrackerScrapeResponse()
{
Object res[] = getActiveScrapeResponse();
return (TRTrackerScraperResponse)res[0];
}
protected Object[] getActiveScrapeResponse()
{
TRTrackerScraperResponse response = null;
URL active_url = null;
TRTrackerScraper scraper = globalManager.getTrackerScraper();
TRTrackerAnnouncer tc = getTrackerClient();
if (tc != null)
response = scraper.scrape(tc);
if (response == null && torrent != null)
{
TRTrackerScraperResponse non_null_response = null;
TOTorrentAnnounceURLSet sets[];
try
{
sets = torrent.getAnnounceURLGroup().getAnnounceURLSets();
}
catch (Exception e)
{
return (new Object[] {
scraper.scrape(torrent), active_url
});
}
if (sets.length == 0)
{
response = scraper.scrape(torrent);
} else
{
Random scrape_random = new Random(scrape_random_seed);
for (int i = 0; response == null && i < sets.length; i++)
{
TOTorrentAnnounceURLSet set = sets[i];
URL urls[] = set.getAnnounceURLs();
List rand_urls = new ArrayList();
for (int j = 0; j < urls.length; j++)
{
URL url = urls[j];
int pos = (int)(scrape_random.nextDouble() * (double)(rand_urls.size() + 1));
rand_urls.add(pos, url);
}
for (int j = 0; response == null && j < rand_urls.size(); j++)
{
URL url = (URL)rand_urls.get(j);
response = scraper.scrape(torrent, url);
if (response == null)
continue;
int status = response.getStatus();
if (status == 2)
{
active_url = url;
break;
}
if (status == 0 || status == 3)
break;
if (response.isValid() && status != 1)
continue;
if (non_null_response == null)
non_null_response = response;
response = null;
}
}
if (response == null)
response = non_null_response;
}
}
return (new Object[] {
response, active_url
});
}
public void requestTrackerAnnounce(boolean force)
{
TRTrackerAnnouncer tc = getTrackerClient();
if (tc != null)
tc.update(force);
}
public void requestTrackerScrape(boolean force)
{
if (torrent != null)
{
TRTrackerScraper scraper = globalManager.getTrackerScraper();
scraper.scrape(torrent, force);
}
}
protected void setTrackerRefreshDelayOverrides(int percent)
{
TRTrackerAnnouncer tc = getTrackerClient();
if (tc != null)
tc.setRefreshDelayOverrides(percent);
}
protected boolean activateRequest(int count)
{
Iterator it = activation_listeners.iterator();
_L2:
DownloadManagerActivationListener listener;
if (!it.hasNext())
break; /* Loop/switch isn't completed */
listener = (DownloadManagerActivationListener)it.next();
if (listener.activateRequest(count))
return true;
continue; /* Loop/switch isn't completed */
Throwable e;
e;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -