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

📄 show.java

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

package org.gudy.azureus2.ui.console.commands;

import com.aelitis.azureus.core.AzureusCore;
import com.aelitis.azureus.core.dht.DHT;
import com.aelitis.azureus.core.dht.control.DHTControl;
import com.aelitis.azureus.core.dht.control.DHTControlStats;
import com.aelitis.azureus.core.dht.db.DHTDB;
import com.aelitis.azureus.core.dht.db.DHTDBStats;
import com.aelitis.azureus.core.dht.router.DHTRouter;
import com.aelitis.azureus.core.dht.router.DHTRouterStats;
import com.aelitis.azureus.core.dht.transport.*;
import com.aelitis.azureus.core.networkmanager.admin.NetworkAdmin;
import com.aelitis.azureus.core.peermanager.piecepicker.PiecePicker;
import com.aelitis.azureus.core.stats.AzureusCoreStats;
import com.aelitis.azureus.plugins.dht.DHTPlugin;
import java.io.*;
import java.text.DecimalFormat;
import java.util.*;
import org.gudy.azureus2.core3.disk.DiskManager;
import org.gudy.azureus2.core3.disk.DiskManagerFileInfo;
import org.gudy.azureus2.core3.download.DownloadManager;
import org.gudy.azureus2.core3.download.DownloadManagerStats;
import org.gudy.azureus2.core3.global.GlobalManager;
import org.gudy.azureus2.core3.global.GlobalManagerStats;
import org.gudy.azureus2.core3.internat.MessageText;
import org.gudy.azureus2.core3.peer.*;
import org.gudy.azureus2.core3.tracker.client.TRTrackerAnnouncer;
import org.gudy.azureus2.core3.tracker.client.TRTrackerScraperResponse;
import org.gudy.azureus2.core3.util.*;
import org.gudy.azureus2.plugins.PluginInterface;
import org.gudy.azureus2.plugins.PluginManager;
import org.gudy.azureus2.ui.console.ConsoleInput;

// Referenced classes of package org.gudy.azureus2.ui.console.commands:
//			IConsoleCommand, TorrentFilter

public class Show extends IConsoleCommand
{
	private static final class TorrentComparator
		implements Comparator
	{

		public final int compare(Object a, Object b)
		{
			DownloadManager aDL = (DownloadManager)a;
			DownloadManager bDL = (DownloadManager)b;
			boolean aIsComplete = aDL.getStats().getDownloadCompleted(false) == 1000;
			boolean bIsComplete = bDL.getStats().getDownloadCompleted(false) == 1000;
			if (aIsComplete && !bIsComplete)
				return 1;
			if (!aIsComplete && bIsComplete)
				return -1;
			else
				return aDL.getPosition() - bDL.getPosition();
		}

		private TorrentComparator()
		{
		}

	}


	public Show()
	{
		super("show", "sh");
	}

	public String getCommandDescriptions()
	{
		return "show [<various options>]\tsh\tShow info. Use without parameter to get a list of available options.";
	}

	public void printHelpExtra(PrintStream out, List args)
	{
		out.println("> -----");
		out.println("'show' options: ");
		out.println("<#>\t\t\t\tFurther info on a single torrent. Run 'show torrents' first for the number.");
		out.println("options\t\t\to\tShow list of options for 'set' (also available by 'set' without parameters).");
		out.println("files\t\t\tf\tShow list of files found from the 'add -f' command (also available by 'add -l')");
		out.println("dht\t\t\td\tShow distributed database statistics");
		out.println("nat\t\t\tn\tShow NAT status");
		out.println("stats [pattern] [on|off]\ts\tShow stats [with a given pattern] [turn averages on/off]");
		out.println("torrents [opts] [expr]\tt\tShow list of torrents. torrent options may be any (or none) of:");
		out.println("\t\ttransferring\tx\tShow only transferring torrents.");
		out.println("\t\tactive\t\ta\tShow only active torrents.");
		out.println("\t\tcomplete\tc\tShow only complete torrents.");
		out.println("\t\tincomplete\ti\tShow only incomplete torrents.");
		out.println("\te.g. show t a *Az* - shows all active torrents with 'Az' occurring in their name.");
		out.println("> -----");
	}

	public void execute(String commandName, ConsoleInput ci, List args)
	{
		if (args.isEmpty())
		{
			printHelp(ci.out, args);
			return;
		}
		String subCommand = (String)args.remove(0);
		if (subCommand.equalsIgnoreCase("options") || subCommand.equalsIgnoreCase("o"))
		{
			ci.invokeCommand("set", null);
			break MISSING_BLOCK_LABEL_1674;
		}
		if (subCommand.equalsIgnoreCase("files") || subCommand.equalsIgnoreCase("f"))
		{
			ci.invokeCommand("add", Arrays.asList(new String[] {
				"--list"
			}));
			break MISSING_BLOCK_LABEL_1674;
		}
		if (subCommand.equalsIgnoreCase("torrents") || subCommand.equalsIgnoreCase("t"))
		{
			ci.out.println("> -----");
			ci.torrents.clear();
			ci.torrents.addAll(ci.getGlobalManager().getDownloadManagers());
			Collections.sort(ci.torrents, new TorrentComparator());
			if (ci.torrents.isEmpty())
			{
				ci.out.println("No Torrents");
				ci.out.println("> -----");
				return;
			}
			long totalReceived = 0L;
			long totalSent = 0L;
			long totalDiscarded = 0L;
			int connectedSeeds = 0;
			int connectedPeers = 0;
			boolean bShowOnlyActive = false;
			boolean bShowOnlyComplete = false;
			boolean bShowOnlyIncomplete = false;
			boolean bShowOnlyTransferring = false;
			Iterator iter = args.iterator();
			do
			{
				if (!iter.hasNext())
					break;
				String arg = (String)iter.next();
				if ("active".equalsIgnoreCase(arg) || "a".equalsIgnoreCase(arg))
				{
					bShowOnlyActive = true;
					iter.remove();
				} else
				if ("complete".equalsIgnoreCase(arg) || "c".equalsIgnoreCase(arg))
				{
					bShowOnlyComplete = true;
					iter.remove();
				} else
				if ("incomplete".equalsIgnoreCase(arg) || "i".equalsIgnoreCase(arg))
				{
					bShowOnlyIncomplete = true;
					iter.remove();
				} else
				if ("transferring".equalsIgnoreCase(arg) || "x".equalsIgnoreCase(arg))
				{
					bShowOnlyTransferring = true;
					bShowOnlyActive = true;
					iter.remove();
				}
			} while (true);
			Iterator torrent;
			if (args.size() > 0)
			{
				List matchedTorrents = (new TorrentFilter()).getTorrents(ci.torrents, args);
				torrent = matchedTorrents.iterator();
			} else
			{
				torrent = ci.torrents.iterator();
			}
			List shown_torrents = new ArrayList();
			do
			{
				if (!torrent.hasNext())
					break;
				DownloadManager dm = (DownloadManager)torrent.next();
				DownloadManagerStats stats = dm.getStats();
				boolean bDownloadCompleted = stats.getDownloadCompleted(false) == 1000;
				boolean bCanShow = bShowOnlyComplete == bShowOnlyIncomplete || bDownloadCompleted && bShowOnlyComplete || !bDownloadCompleted && bShowOnlyIncomplete;
				if (bCanShow && bShowOnlyActive)
				{
					int dmstate = dm.getState();
					bCanShow = dmstate == 60 || dmstate == 50 || dmstate == 30 || dmstate == 5 || dmstate == 20;
				}
				if (bCanShow && bShowOnlyTransferring)
					try
					{
						PEPeerManagerStats ps = dm.getPeerManager().getStats();
						bCanShow = ps.getDataSendRate() > 0L || ps.getDataReceiveRate() > 0L;
					}
					catch (Exception e) { }
				if (bCanShow)
				{
					shown_torrents.add(dm);
					PEPeerManagerStats ps;
					try
					{
						ps = dm.getPeerManager().getStats();
					}
					catch (Exception e)
					{
						ps = null;
					}
					if (ps != null)
					{
						totalReceived += dm.getStats().getTotalDataBytesReceived();
						totalSent += dm.getStats().getTotalDataBytesSent();
						totalDiscarded += ps.getTotalDiscarded();
						connectedSeeds += dm.getNbSeeds();
						connectedPeers += dm.getNbPeers();
					}
					ci.out.print((new StringBuilder()).append(shown_torrents.size() >= 10 ? "" : " ").append(shown_torrents.size()).append(" ").toString());
					ci.out.println(getTorrentSummary(dm));
					ci.out.println();
				}
			} while (true);
			ci.torrents.clear();
			ci.torrents.addAll(shown_torrents);
			GlobalManager gm = ci.getGlobalManager();
			ci.out.println((new StringBuilder()).append("Total Speed (down/up): ").append(DisplayFormatters.formatByteCountToKiBEtcPerSec(gm.getStats().getDataReceiveRate() + gm.getStats().getProtocolReceiveRate())).append(" / ").append(DisplayFormatters.formatByteCountToKiBEtcPerSec(gm.getStats().getDataSendRate() + gm.getStats().getProtocolSendRate())).toString());
			ci.out.println((new StringBuilder()).append("Transferred Volume (down/up/discarded): ").append(DisplayFormatters.formatByteCountToKiBEtc(totalReceived)).append(" / ").append(DisplayFormatters.formatByteCountToKiBEtc(totalSent)).append(" / ").append(DisplayFormatters.formatByteCountToKiBEtc(totalDiscarded)).toString());
			ci.out.println((new StringBuilder()).append("Total Connected Peers (seeds/peers): ").append(Integer.toString(connectedSeeds)).append(" / ").append(Integer.toString(connectedPeers)).toString());
			ci.out.println("> -----");
			break MISSING_BLOCK_LABEL_1674;
		}
		if (subCommand.equalsIgnoreCase("dht") || subCommand.equalsIgnoreCase("d"))
		{
			showDHTStats(ci);
			break MISSING_BLOCK_LABEL_1674;
		}
		if (subCommand.equalsIgnoreCase("nat") || subCommand.equalsIgnoreCase("n"))
		{
			IndentWriter iw = new IndentWriter(new PrintWriter(ci.out));
			iw.setForce(true);
			NetworkAdmin.getSingleton().logNATStatus(iw);
			break MISSING_BLOCK_LABEL_1674;
		}
		if (subCommand.equalsIgnoreCase("stats") || subCommand.equalsIgnoreCase("s"))
		{
			String pattern = ".*";
			if (args.size() > 0)
			{
				pattern = (String)args.get(0);
				if (pattern.equals("*"))
					pattern = ".*";
			}
			if (args.size() > 1)
				AzureusCoreStats.setEnableAverages(((String)args.get(1)).equalsIgnoreCase("on"));
			Set types = new HashSet();
			types.add(pattern);
			Map reply = AzureusCoreStats.getStats(types);
			Iterator it = reply.entrySet().iterator();
			List lines = new ArrayList();
			java.util.Map.Entry entry;
			for (; it.hasNext(); lines.add((new StringBuilder()).append(entry.getKey()).append(" -> ").append(entry.getValue()).toString()))
				entry = (java.util.Map.Entry)it.next();

			Collections.sort(lines);
			for (int i = 0; i < lines.size(); i++)
				ci.out.println(lines.get(i));

			break MISSING_BLOCK_LABEL_1674;
		}
		if (subCommand.equalsIgnoreCase("diag") || subCommand.equalsIgnoreCase("z"))
		{
			try
			{
				ci.out.println("Writing diagnostics to file 'az.diag'");
				FileWriter fw = new FileWriter("az.diag");
				PrintWriter pw = new PrintWriter(fw);
				AEDiagnostics.generateEvidence(pw);
				pw.flush();
				fw.close();
			}
			catch (Throwable e)
			{
				ci.out.println(e);
			}
			break MISSING_BLOCK_LABEL_1674;
		}
		if (ci.torrents == null || ci.torrents != null && ci.torrents.isEmpty())
		{
			ci.out.println("> Command 'show': No torrents in list (try 'show torrents' first).");
			return;
		}
		int number;
		DownloadManager dm;
		try
		{
			number = Integer.parseInt(subCommand);
			if (number == 0 || number > ci.torrents.size())
			{
				ci.out.println((new StringBuilder()).append("> Command 'show': Torrent #").append(number).append(" unknown.").toString());
				return;
			}
		}
		catch (Exception e)
		{
			ci.out.println((new StringBuilder()).append("> Command 'show': Subcommand '").append(subCommand).append("' unknown.").toString());
			return;
		}
		dm = (DownloadManager)ci.torrents.get(number - 1);
		printTorrentDetails(ci.out, dm, number, args.size() > 0);
	}

	protected String getTorrentSummary(DownloadManager dm)
	{
		StringBuffer tstate = new StringBuffer();
		String summaryFormat = getDefaultSummaryFormat();
		char lastch = '0';
		char summaryChars[] = summaryFormat.toCharArray();
		for (int i = 0; i < summaryChars.length; i++)
		{
			char ch = summaryChars[i];
			if (ch == '%' && lastch != '\\')
			{
				if (++i >= summaryChars.length)
					tstate.append('%');
				else
					tstate.append(expandVariable(summaryChars[i], dm));
			} else
			{
				tstate.append(ch);
			}
			lastch = ch;
		}

		return tstate.toString();
	}

	protected String expandVariable(char variable, DownloadManager dm)
	{
		switch (variable)
		{
		case 97: // 'a'
			return getShortStateString(dm.getState());

		case 99: // 'c'
			DecimalFormat df = new DecimalFormat("000.0%");
			return df.format((double)dm.getStats().getCompleted() / 1000D);

		case 116: // 't'

⌨️ 快捷键说明

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