long totalReceived = 0;
long totalSent = 0;
long totalDiscarded = 0;
int connectedSeeds = 0;
int connectedPeers = 0;
PEPeerManagerStats ps;
boolean bShowOnlyActive = false;
boolean bShowOnlyComplete = false;
boolean bShowOnlyIncomplete = false;
boolean bShowOnlyTransferring = false;
for (Iterator iter = args.iterator(); iter.hasNext();) {
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();
}
}
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();
while (torrent.hasNext()) {
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 == DownloadManager.STATE_SEEDING) || (dmstate == DownloadManager.STATE_DOWNLOADING) || (dmstate == DownloadManager.STATE_CHECKING) || (dmstate == DownloadManager.STATE_INITIALIZING) || (dmstate == DownloadManager.STATE_ALLOCATING);
}
if (bCanShow && bShowOnlyTransferring) {
try {
ps = dm.getPeerManager().getStats();
bCanShow = ps.getDataSendRate() > 0 || ps.getDataReceiveRate() > 0;
}
catch (Exception e) {}
}
if (bCanShow) {
shown_torrents.add( dm );
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(((shown_torrents.size() < 10) ? " " : "") + shown_torrents.size() + " ");
ci.out.println(getTorrentSummary(dm));