📄 show.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: 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 + -