⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 downloadmanagerstatsimpl.java

📁 java 文件下载器。可自定义
💻 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 + -