📄 downloadmanagerstatsimpl.java
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space
// Source File Name: DownloadManagerStatsImpl.java
package org.gudy.azureus2.core3.download.impl;
import org.gudy.azureus2.core3.disk.DiskManager;
import org.gudy.azureus2.core3.download.DownloadManagerState;
import org.gudy.azureus2.core3.download.DownloadManagerStats;
import org.gudy.azureus2.core3.peer.PEPeerManager;
import org.gudy.azureus2.core3.peer.PEPeerManagerStats;
import org.gudy.azureus2.core3.torrent.TOTorrent;
import org.gudy.azureus2.core3.util.IndentWriter;
import org.gudy.azureus2.core3.util.SystemTime;
// Referenced classes of package org.gudy.azureus2.core3.download.impl:
// DownloadManagerImpl
public class DownloadManagerStatsImpl
implements DownloadManagerStats
{
private DownloadManagerImpl download_manager;
private int completed;
private int downloadCompleted;
private long saved_data_bytes_downloaded;
private long saved_protocol_bytes_downloaded;
private long saved_data_bytes_uploaded;
private long saved_protocol_bytes_uploaded;
private long saved_discarded;
private long saved_hashfails;
private long saved_SecondsDownloading;
private long saved_SecondsOnlySeeding;
private int saved_SecondsSinceDownload;
private int saved_SecondsSinceUpload;
private int max_upload_rate_bps;
private int max_download_rate_bps;
protected DownloadManagerStatsImpl(DownloadManagerImpl dm)
{
saved_discarded = 0L;
saved_hashfails = 0L;
saved_SecondsDownloading = 0L;
saved_SecondsOnlySeeding = 0L;
saved_SecondsSinceDownload = 0;
saved_SecondsSinceUpload = 0;
max_upload_rate_bps = 0;
max_download_rate_bps = 0;
download_manager = dm;
}
public long getDataReceiveRate()
{
PEPeerManager pm = download_manager.getPeerManager();
if (pm != null)
return pm.getStats().getDataReceiveRate();
else
return 0L;
}
public long getProtocolReceiveRate()
{
PEPeerManager pm = download_manager.getPeerManager();
if (pm != null)
return pm.getStats().getProtocolReceiveRate();
else
return 0L;
}
public long getDataSendRate()
{
PEPeerManager pm = download_manager.getPeerManager();
if (pm != null)
return pm.getStats().getDataSendRate();
else
return 0L;
}
public long getProtocolSendRate()
{
PEPeerManager pm = download_manager.getPeerManager();
if (pm != null)
return pm.getStats().getProtocolSendRate();
else
return 0L;
}
public long getETA()
{
PEPeerManager pm = download_manager.getPeerManager();
if (pm != null)
return pm.getETA();
else
return -1L;
}
public int getCompleted()
{
DiskManager dm = download_manager.getDiskManager();
if (dm == null)
{
int state = download_manager.getState();
if (state == 20 || state == 30 || state == 5)
return completed;
else
return downloadCompleted;
}
if (dm.getState() == 2 || dm.getState() == 3 || dm.getState() == 1)
{
return dm.getPercentDone();
} else
{
long total = dm.getTotalLength();
return total != 0L ? (int)((1000L * (total - dm.getRemaining())) / total) : 0;
}
}
public void setCompleted(int _completed)
{
completed = _completed;
}
public int getDownloadCompleted(boolean bLive)
{
DiskManager dm = download_manager.getDiskManager();
if (dm == null)
return downloadCompleted;
int state = dm.getState();
boolean transient_state = state == 1 || state == 2 || state == 3;
long total = dm.getTotalLength();
int computed_completion = total != 0L ? (int)((1000L * (total - dm.getRemaining())) / total) : 0;
if (!transient_state)
downloadCompleted = computed_completion;
if (bLive)
return computed_completion;
else
return downloadCompleted;
}
public void setDownloadCompleted(int _completed)
{
downloadCompleted = _completed;
}
public String getElapsedTime()
{
PEPeerManager pm = download_manager.getPeerManager();
if (pm != null)
return pm.getElapsedTime();
else
return "";
}
public long getTimeStarted()
{
PEPeerManager pm = download_manager.getPeerManager();
if (pm != null)
return pm.getTimeStarted();
else
return -1L;
}
public long getTimeStartedSeeding()
{
PEPeerManager pm = download_manager.getPeerManager();
if (pm != null)
return pm.getTimeStartedSeeding();
else
return -1L;
}
public long getTotalDataBytesReceived()
{
PEPeerManager pm = download_manager.getPeerManager();
if (pm != null)
return saved_data_bytes_downloaded + pm.getStats().getTotalDataBytesReceived();
else
return saved_data_bytes_downloaded;
}
public long getTotalGoodDataBytesReceived()
{
long downloaded = getTotalDataBytesReceived();
downloaded -= getHashFailBytes() + getDiscarded();
if (downloaded < 0L)
downloaded = 0L;
return downloaded;
}
public long getTotalProtocolBytesReceived()
{
PEPeerManager pm = download_manager.getPeerManager();
if (pm != null)
return saved_protocol_bytes_downloaded + pm.getStats().getTotalProtocolBytesReceived();
else
return saved_protocol_bytes_downloaded;
}
public long getTotalDataBytesSent()
{
PEPeerManager pm = download_manager.getPeerManager();
if (pm != null)
return saved_data_bytes_uploaded + pm.getStats().getTotalDataBytesSent();
else
return saved_data_bytes_uploaded;
}
public long getTotalProtocolBytesSent()
{
PEPeerManager pm = download_manager.getPeerManager();
if (pm != null)
return saved_protocol_bytes_uploaded + pm.getStats().getTotalProtocolBytesSent();
else
return saved_protocol_bytes_uploaded;
}
public long getRemaining()
{
DiskManager disk_manager = download_manager.getDiskManager();
if (disk_manager == null)
return download_manager.getSize() - ((long)getCompleted() * download_manager.getSize()) / 1000L;
else
return disk_manager.getRemainingExcludingDND();
}
public long getDiscarded()
{
PEPeerManager pm = download_manager.getPeerManager();
if (pm != null)
return saved_discarded + pm.getStats().getTotalDiscarded();
else
return saved_discarded;
}
public long getHashFailCount()
{
TOTorrent t = download_manager.getTorrent();
if (t == null)
return 0L;
long total = getHashFailBytes();
long res = total / t.getPieceLength();
if (res == 0L && total > 0L)
res = 1L;
return res;
}
public long getHashFailBytes()
{
PEPeerManager pm = download_manager.getPeerManager();
if (pm != null)
return saved_hashfails + pm.getStats().getTotalHashFailBytes();
else
return saved_hashfails;
}
public long getTotalAverage()
{
PEPeerManager pm = download_manager.getPeerManager();
if (pm != null)
return pm.getStats().getTotalAverage();
else
return 0L;
}
public long getTotalAveragePerPeer()
{
int div = download_manager.getNbPeers() + (download_manager.isDownloadComplete(false) ? 0 : 1);
long average = div >= 1 ? getTotalAverage() / (long)div : 0L;
return average;
}
public int getShareRatio()
{
long downloaded = getTotalGoodDataBytesReceived();
long uploaded = getTotalDataBytesSent();
if (downloaded <= 0L)
return -1;
else
return (int)((1000L * uploaded) / downloaded);
}
public long getSecondsDownloading()
{
long lTimeStartedDL = getTimeStarted();
if (lTimeStartedDL >= 0L)
{
long lTimeEndedDL = getTimeStartedSeeding();
if (lTimeEndedDL == -1L)
lTimeEndedDL = SystemTime.getCurrentTime();
if (lTimeEndedDL > lTimeStartedDL)
return saved_SecondsDownloading + (lTimeEndedDL - lTimeStartedDL) / 1000L;
}
return saved_SecondsDownloading;
}
public long getSecondsOnlySeeding()
{
long lTimeStarted = getTimeStartedSeeding();
if (lTimeStarted >= 0L)
return saved_SecondsOnlySeeding + (SystemTime.getCurrentTime() - lTimeStarted) / 1000L;
else
return saved_SecondsOnlySeeding;
}
public float getAvailability()
{
PEPeerManager pm = download_manager.getPeerManager();
if (pm == null)
return -1F;
else
return pm.getMinAvailability();
}
public int getUploadRateLimitBytesPerSecond()
{
return max_upload_rate_bps;
}
public void setUploadRateLimitBytesPerSecond(int max_rate_bps)
{
max_upload_rate_bps = max_rate_bps;
}
public int getDownloadRateLimitBytesPerSecond()
{
return max_download_rate_bps;
}
public void setDownloadRateLimitBytesPerSecond(int max_rate_bps)
{
max_download_rate_bps = max_rate_bps;
}
public int getTimeSinceLastDataReceivedInSeconds()
{
PEPeerManager pm = download_manager.getPeerManager();
int res = saved_SecondsSinceDownload;
if (pm != null)
{
int current = pm.getStats().getTimeSinceLastDataReceivedInSeconds();
if (current >= 0)
res = current;
else
if (res >= 0)
{
long now = SystemTime.getCurrentTime();
long elapsed = now - pm.getTimeStarted();
if (elapsed < 0L)
elapsed = 0L;
res = (int)((long)res + elapsed / 1000L);
}
}
return res;
}
public int getTimeSinceLastDataSentInSeconds()
{
PEPeerManager pm = download_manager.getPeerManager();
int res = saved_SecondsSinceUpload;
if (pm != null)
{
int current = pm.getStats().getTimeSinceLastDataSentInSeconds();
if (current >= 0)
res = current;
else
if (res >= 0)
{
long now = SystemTime.getCurrentTime();
long elapsed = now - pm.getTimeStarted();
if (elapsed < 0L)
elapsed = 0L;
res = (int)((long)res + elapsed / 1000L);
}
}
return res;
}
public long getAvailWentBadTime()
{
PEPeerManager pm = download_manager.getPeerManager();
if (pm != null)
{
long bad_time = pm.getAvailWentBadTime();
if (bad_time > 0L)
return bad_time;
if ((double)pm.getMinAvailability() >= 1.0D)
return 0L;
}
DownloadManagerState state = download_manager.getDownloadState();
return state.getLongAttribute("badavail");
}
protected void saveSessionTotals()
{
saved_data_bytes_downloaded = getTotalDataBytesReceived();
saved_data_bytes_uploaded = getTotalDataBytesSent();
saved_discarded = getDiscarded();
saved_hashfails = getHashFailBytes();
saved_SecondsDownloading = getSecondsDownloading();
saved_SecondsOnlySeeding = getSecondsOnlySeeding();
saved_SecondsSinceDownload = getTimeSinceLastDataReceivedInSeconds();
saved_SecondsSinceUpload = getTimeSinceLastDataSentInSeconds();
DownloadManagerState state = download_manager.getDownloadState();
state.setIntAttribute("timesincedl", saved_SecondsSinceDownload);
state.setIntAttribute("timesinceul", saved_SecondsSinceUpload);
state.setLongAttribute("badavail", getAvailWentBadTime());
}
protected void setSavedDownloadedUploaded(long d, long u)
{
saved_data_bytes_downloaded = d;
saved_data_bytes_uploaded = u;
}
public void restoreSessionTotals(long _saved_data_bytes_downloaded, long _saved_data_bytes_uploaded, long _saved_discarded, long _saved_hashfails, long _saved_SecondsDownloading, long _saved_SecondsOnlySeeding)
{
saved_data_bytes_downloaded = _saved_data_bytes_downloaded;
saved_data_bytes_uploaded = _saved_data_bytes_uploaded;
saved_discarded = _saved_discarded;
saved_hashfails = _saved_hashfails;
saved_SecondsDownloading = _saved_SecondsDownloading;
saved_SecondsOnlySeeding = _saved_SecondsOnlySeeding;
DownloadManagerState state = download_manager.getDownloadState();
saved_SecondsSinceDownload = state.getIntAttribute("timesincedl");
saved_SecondsSinceUpload = state.getIntAttribute("timesinceul");
}
protected void generateEvidence(IndentWriter writer)
{
writer.println("DownloadManagerStats");
writer.indent();
writer.println((new StringBuilder()).append("recv_d=").append(getTotalDataBytesReceived()).append(",recv_p=").append(getTotalProtocolBytesReceived()).append(",recv_g=").append(getTotalGoodDataBytesReceived()).append(",sent_d=").append(getTotalDataBytesSent()).append(",sent_p=").append(getTotalProtocolBytesSent()).append(",discard=").append(getDiscarded()).append(",hash_fails=").append(getHashFailCount()).append("/").append(getHashFailBytes()).append(",comp=").append(getCompleted()).append("[live:").append(getDownloadCompleted(true)).append("/").append(getDownloadCompleted(false)).append("],dl_comp=").append(downloadCompleted).append(",remaining=").append(getRemaining()).toString());
writer.exdent();
break MISSING_BLOCK_LABEL_196;
Exception exception;
exception;
writer.exdent();
throw exception;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -