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

📄 downloadimpl.java

📁 java 文件下载器。可自定义
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
// 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:   DownloadImpl.java

package org.gudy.azureus2.pluginsimpl.local.download;

import com.aelitis.azureus.core.util.CopyOnWriteList;
import com.aelitis.azureus.core.util.CopyOnWriteMap;
import java.io.File;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.gudy.azureus2.core3.category.Category;
import org.gudy.azureus2.core3.category.CategoryManager;
import org.gudy.azureus2.core3.download.DownloadManager;
import org.gudy.azureus2.core3.download.DownloadManagerActivationListener;
import org.gudy.azureus2.core3.download.DownloadManagerException;
import org.gudy.azureus2.core3.download.DownloadManagerListener;
import org.gudy.azureus2.core3.download.DownloadManagerPeerListener;
import org.gudy.azureus2.core3.download.DownloadManagerState;
import org.gudy.azureus2.core3.download.DownloadManagerStateAttributeListener;
import org.gudy.azureus2.core3.download.DownloadManagerStateEvent;
import org.gudy.azureus2.core3.download.DownloadManagerStateListener;
import org.gudy.azureus2.core3.download.DownloadManagerStats;
import org.gudy.azureus2.core3.download.DownloadManagerTrackerListener;
import org.gudy.azureus2.core3.download.impl.DownloadManagerMoveHandler;
import org.gudy.azureus2.core3.global.GlobalManager;
import org.gudy.azureus2.core3.global.GlobalManagerDownloadRemovalVetoException;
import org.gudy.azureus2.core3.internat.MessageText;
import org.gudy.azureus2.core3.logging.LogRelation;
import org.gudy.azureus2.core3.peer.PEPeer;
import org.gudy.azureus2.core3.peer.PEPeerManager;
import org.gudy.azureus2.core3.tracker.client.TRTrackerAnnouncer;
import org.gudy.azureus2.core3.tracker.client.TRTrackerAnnouncerResponse;
import org.gudy.azureus2.core3.tracker.client.TRTrackerScraperResponse;
import org.gudy.azureus2.core3.util.AEMonitor;
import org.gudy.azureus2.core3.util.BEncoder;
import org.gudy.azureus2.core3.util.Debug;
import org.gudy.azureus2.core3.util.SystemTime;
import org.gudy.azureus2.plugins.disk.DiskManager;
import org.gudy.azureus2.plugins.disk.DiskManagerFileInfo;
import org.gudy.azureus2.plugins.download.Download;
import org.gudy.azureus2.plugins.download.DownloadActivationEvent;
import org.gudy.azureus2.plugins.download.DownloadActivationListener;
import org.gudy.azureus2.plugins.download.DownloadAnnounceResult;
import org.gudy.azureus2.plugins.download.DownloadAttributeListener;
import org.gudy.azureus2.plugins.download.DownloadCompletionListener;
import org.gudy.azureus2.plugins.download.DownloadException;
import org.gudy.azureus2.plugins.download.DownloadListener;
import org.gudy.azureus2.plugins.download.DownloadPeerListener;
import org.gudy.azureus2.plugins.download.DownloadPropertyEvent;
import org.gudy.azureus2.plugins.download.DownloadPropertyListener;
import org.gudy.azureus2.plugins.download.DownloadRemovalVetoException;
import org.gudy.azureus2.plugins.download.DownloadScrapeResult;
import org.gudy.azureus2.plugins.download.DownloadStats;
import org.gudy.azureus2.plugins.download.DownloadTrackerListener;
import org.gudy.azureus2.plugins.download.DownloadWillBeRemovedListener;
import org.gudy.azureus2.plugins.download.savelocation.SaveLocationChange;
import org.gudy.azureus2.plugins.peers.PeerManager;
import org.gudy.azureus2.plugins.torrent.Torrent;
import org.gudy.azureus2.plugins.torrent.TorrentAttribute;
import org.gudy.azureus2.pluginsimpl.local.deprecate.PluginDeprecation;
import org.gudy.azureus2.pluginsimpl.local.disk.DiskManagerFileInfoImpl;
import org.gudy.azureus2.pluginsimpl.local.peers.PeerManagerImpl;
import org.gudy.azureus2.pluginsimpl.local.torrent.TorrentImpl;
import org.gudy.azureus2.pluginsimpl.local.torrent.TorrentManagerImpl;

// Referenced classes of package org.gudy.azureus2.pluginsimpl.local.download:
//			DownloadAnnounceResultImpl, DownloadScrapeResultImpl, DownloadStatsImpl

public class DownloadImpl extends LogRelation
	implements Download, DownloadManagerListener, DownloadManagerTrackerListener, DownloadManagerStateListener, DownloadManagerActivationListener, DownloadManagerStateAttributeListener
{
	private static class PropertyListenerBridge
		implements DownloadAttributeListener
	{

		private DownloadPropertyListener l;

		public void attributeEventOccurred(Download d, final TorrentAttribute attr, final int event_type)
		{
			l.propertyChanged(d, new DownloadPropertyEvent() {

				final int val$event_type;
				final TorrentAttribute val$attr;
				final PropertyListenerBridge this$0;

				public int getType()
				{
					return event_type;
				}

				public Object getData()
				{
					return attr;
				}

				
				{
					this$0 = PropertyListenerBridge.this;
					event_type = i;
					attr = torrentattribute;
					super();
				}
			});
		}

		public PropertyListenerBridge(DownloadPropertyListener l)
		{
			this.l = l;
		}
	}


	private DownloadManager download_manager;
	private DownloadStatsImpl download_stats;
	private int latest_state;
	private boolean latest_forcedStart;
	private DownloadAnnounceResultImpl last_announce_result;
	private DownloadScrapeResultImpl last_scrape_result;
	private TorrentImpl torrent;
	private List listeners;
	private AEMonitor listeners_mon;
	private List property_listeners;
	private List tracker_listeners;
	private AEMonitor tracker_listeners_mon;
	private List removal_listeners;
	private AEMonitor removal_listeners_mon;
	private Map peer_listeners;
	private AEMonitor peer_listeners_mon;
	private CopyOnWriteList completion_listeners;
	private CopyOnWriteMap read_attribute_listeners_map_cow;
	private CopyOnWriteMap write_attribute_listeners_map_cow;
	private CopyOnWriteList activation_listeners;
	private DownloadActivationEvent activation_state;
	private HashMap property_to_attribute_map;

	protected DownloadImpl(DownloadManager _dm)
	{
		latest_state = 7;
		last_announce_result = new DownloadAnnounceResultImpl(this, null);
		last_scrape_result = new DownloadScrapeResultImpl(this, null);
		torrent = null;
		listeners = new ArrayList();
		listeners_mon = new AEMonitor("Download:L");
		property_listeners = new ArrayList();
		tracker_listeners = new ArrayList();
		tracker_listeners_mon = new AEMonitor("Download:TL");
		removal_listeners = new ArrayList();
		removal_listeners_mon = new AEMonitor("Download:RL");
		peer_listeners = new HashMap();
		peer_listeners_mon = new AEMonitor("Download:PL");
		completion_listeners = new CopyOnWriteList();
		read_attribute_listeners_map_cow = new CopyOnWriteMap();
		write_attribute_listeners_map_cow = new CopyOnWriteMap();
		activation_listeners = new CopyOnWriteList();
		property_to_attribute_map = null;
		download_manager = _dm;
		download_stats = new DownloadStatsImpl(download_manager);
		activation_state = new DownloadActivationEvent() {

			final DownloadImpl this$0;

			public Download getDownload()
			{
				return DownloadImpl.this;
			}

			public int getActivationCount()
			{
				return download_manager.getActivationCount();
			}

			
			{
				this$0 = DownloadImpl.this;
				super();
			}
		};
		download_manager.addListener(this);
		latest_forcedStart = download_manager.isForceStart();
	}

	public DownloadManager getDownload()
	{
		return download_manager;
	}

	public int getState()
	{
		return convertState(download_manager.getState());
	}

	public int getSubState()
	{
		int state = getState();
		if (state == 6)
		{
			int substate = download_manager.getSubState();
			if (substate == 75)
				return 9;
			if (substate == 70)
				return 7;
			if (substate == 100)
				return 8;
		}
		return state;
	}

	protected int convertState(int dm_state)
	{
		int our_state;
		switch (dm_state)
		{
		case 0: // '\0'
			our_state = 1;
			break;

		case 5: // '\005'
		case 10: // '\n'
		case 20: // '\024'
		case 30: // '\036'
			our_state = 2;
			break;

		case 40: // '('
			our_state = 3;
			break;

		case 50: // '2'
		case 55: // '7'
			our_state = 4;
			break;

		case 60: // '<'
			our_state = 5;
			break;

		case 65: // 'A'
			our_state = 6;
			break;

		case 70: // 'F'
			our_state = 7;
			break;

		case 75: // 'K'
			our_state = 9;
			break;

		case 100: // 'd'
			our_state = 8;
			break;

		default:
			our_state = 8;
			break;
		}
		return our_state;
	}

	public String getErrorStateDetails()
	{
		return download_manager.getErrorDetails();
	}

	public boolean getFlag(long flag)
	{
		return download_manager.getDownloadState().getFlag(flag);
	}

	public void setFlag(long flag, boolean set)
	{
		download_manager.getDownloadState().setFlag(flag, set);
	}

	public int getIndex()
	{
		GlobalManager globalManager = download_manager.getGlobalManager();
		return globalManager.getIndexOf(download_manager);
	}

	public Torrent getTorrent()
	{
		if (this.torrent != null)
			return this.torrent;
		org.gudy.azureus2.core3.torrent.TOTorrent torrent = download_manager.getTorrent();
		if (torrent == null)
		{
			return null;
		} else
		{
			this.torrent = new TorrentImpl(torrent);
			return this.torrent;
		}
	}

	public void initialize()
		throws DownloadException
	{
		int state = download_manager.getState();
		if (state == 0)
			download_manager.initialize();
		else
			throw new DownloadException((new StringBuilder()).append("Download::initialize: download not waiting (state=").append(state).append(")").toString());
	}

	public void start()
		throws DownloadException
	{
		int state = download_manager.getState();
		if (state == 40)
			download_manager.startDownload();
		else
			throw new DownloadException((new StringBuilder()).append("Download::start: download not ready (state=").append(state).append(")").toString());
	}

	public void restart()
		throws DownloadException
	{
		int state = download_manager.getState();
		if (state == 70 || state == 75)
			download_manager.setStateWaiting();
		else
			throw new DownloadException((new StringBuilder()).append("Download::restart: download already running (state=").append(state).append(")").toString());
	}

	public void stop()
		throws DownloadException
	{
		if (download_manager.getState() != 70)
			download_manager.stopIt(70, false, false);
		else
			throw new DownloadException("Download::stop: download already stopped");
	}

	public void stopAndQueue()
		throws DownloadException
	{
		if (download_manager.getState() != 75)
			download_manager.stopIt(75, false, false);
		else
			throw new DownloadException("Download::stopAndQueue: download already queued");
	}

	public void recheckData()
		throws DownloadException
	{
		if (!download_manager.canForceRecheck())
		{
			throw new DownloadException("Download::recheckData: download must be stopped, queued or in error state");
		} else
		{
			download_manager.forceRecheck();
			return;
		}
	}

	public boolean isStartStopLocked()
	{
		return download_manager.getState() == 70;
	}

	public boolean isForceStart()
	{
		return download_manager.isForceStart();
	}

	public void setForceStart(boolean forceStart)
	{
		download_manager.setForceStart(forceStart);
	}

	public boolean isPaused()
	{
		return download_manager.isPaused();
	}

	public void pause()
	{
		download_manager.pause();
	}

	public void resume()
	{
		download_manager.resume();
	}

	public int getPosition()
	{
		return download_manager.getPosition();
	}

	public long getCreationTime()
	{
		return download_manager.getCreationTime();
	}

	public void setPosition(int newPosition)
	{
		download_manager.setPosition(newPosition);
	}

	public void moveUp()
	{
		download_manager.getGlobalManager().moveUp(download_manager);
	}

	public void moveDown()
	{
		download_manager.getGlobalManager().moveDown(download_manager);
	}

	public void moveTo(int pos)
	{
		download_manager.getGlobalManager().moveTo(download_manager, pos);
	}

	public String getName()
	{
		return download_manager.getDisplayName();
	}

	public String getTorrentFileName()
	{
		return download_manager.getTorrentFileName();
	}

	public String getCategoryName()
	{
		Category category = download_manager.getDownloadState().getCategory();
		if (category == null)
			category = CategoryManager.getCategory(2);
		if (category == null)
			return null;
		else
			return category.getName();
	}

	public String getAttribute(TorrentAttribute attribute)
	{
		String name = convertAttribute(attribute);
		if (name != null)
			return download_manager.getDownloadState().getAttribute(name);
		else
			return null;
	}

	public String[] getListAttribute(TorrentAttribute attribute)
	{
		String name = convertAttribute(attribute);
		if (name != null)
			return download_manager.getDownloadState().getListAttribute(name);
		else
			return null;
	}

	public void setListAttribute(TorrentAttribute attribute, String value[])
	{
		String name = convertAttribute(attribute);
		if (name != null)
			download_manager.getDownloadState().setListAttribute(name, value);
	}

	public void setMapAttribute(TorrentAttribute attribute, Map value)
	{
		String name = convertAttribute(attribute);
		if (name != null)
			download_manager.getDownloadState().setMapAttribute(name, BEncoder.cloneMap(value));
	}

	public Map getMapAttribute(TorrentAttribute attribute)
	{
		String name = convertAttribute(attribute);
		if (name != null)
			return download_manager.getDownloadState().getMapAttribute(name);
		else
			return null;
	}

	public void setAttribute(TorrentAttribute attribute, String value)
	{
		String name = convertAttribute(attribute);
		if (name != null)
			download_manager.getDownloadState().setAttribute(name, value);
	}

	public boolean hasAttribute(TorrentAttribute attribute)
	{
		String name = convertAttribute(attribute);
		if (name == null)
			return false;
		else
			return download_manager.getDownloadState().hasAttribute(name);
	}

	public boolean getBooleanAttribute(TorrentAttribute attribute)
	{
		String name = convertAttribute(attribute);
		if (name == null)
			return false;
		else
			return download_manager.getDownloadState().getBooleanAttribute(name);
	}

	public void setBooleanAttribute(TorrentAttribute attribute, boolean value)
	{
		String name = convertAttribute(attribute);
		if (name != null)
			download_manager.getDownloadState().setBooleanAttribute(name, value);
	}

	public int getIntAttribute(TorrentAttribute attribute)
	{
		String name = convertAttribute(attribute);
		if (name == null)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -