/* * Created on 11 juil. 2003 * Copyright (C) 2003, 2004, 2005, 2006 Aelitis, All Rights Reserved. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * AELITIS, SAS au capital de 46,603.30 euros * 8 Allee Lenotre, La Grille Royale, 78600 Le Mesnil le Roi, France. * */ package org.gudy.azureus2.cl; import org.gudy.azureus2.core3.config.*; import org.gudy.azureus2.core3.security.SESecurityManager; import org.gudy.azureus2.core3.util.*; import org.gudy.azureus2.core3.download.*; /** * @author Olivier * */ public class Main { public static void main(String args[]) { if (!parseParameters(args)) usage(); String torrentFile = args[args.length - 2]; String path = args[args.length - 1]; DownloadManager manager = DownloadManagerFactory.create(null, null, torrentFile, path, null, DownloadManager.STATE_WAITING, false, false, null, null ); manager.initialize(); while (true) { StringBuffer buf = new StringBuffer(); int state = manager.getState(); switch (state) { case DownloadManager.STATE_WAITING : buf.append("Waiting"); break; case DownloadManager.STATE_ALLOCATING : buf.append("Allocating"); break; case DownloadManager.STATE_CHECKING : buf.append("Checking"); break; case DownloadManager.STATE_READY : buf.append("Ready"); manager.startDownload(); break; case DownloadManager.STATE_DOWNLOADING : buf.append("Downloading"); break; case DownloadManager.STATE_SEEDING : buf.append("Seeding"); break; case DownloadManager.STATE_STOPPED : buf.append("Stopped"); break; case DownloadManager.STATE_ERROR : buf.append("Error : " + manager.getErrorDetails()); break; } buf.append(" C:"); DownloadManagerStats stats = manager.getStats(); int completed = stats.getCompleted(); buf.append(completed/10); buf.append('.'); buf.append(completed%10); buf.append('%'); buf.append(" S:"); buf.append(manager.getNbSeeds()); buf.append(" P:"); buf.append(manager.getNbPeers()); buf.append(" D:"); buf.append(DisplayFormatters.formatDownloaded(stats)); buf.append(" U:"); buf.append(DisplayFormatters.formatByteCountToKiBEtc(stats.getTotalDataBytesSent())); buf.append(" DS:"); buf.append(DisplayFormatters.formatByteCountToKiBEtcPerSec(stats.getDataReceiveRate())); buf.append(" US:"); buf.append(DisplayFormatters.formatByteCountToKiBEtcPerSec(stats.getDataSendRate())); buf.append(" T:"); buf.append(manager.getTrackerStatus()); while(buf.length() < 80) { buf.append(' '); } System.out.print("\r".concat(buf.toString())); if(state == DownloadManager.STATE_ERROR) return; try { Thread.sleep(500); } catch (Exception e) { //Do nothing } } } private static boolean parseParameters(String args[]) { if (args.length < 2) return false; if (args.length == 2) return true; if ((args.length % 2) != 0) return false; try { for (int i = 0; i < args.length - 2; i += 2) { String param = args[i]; String value = args[i + 1]; if (param.equals("--maxUploads")) COConfigurationManager.setParameter("Max Uploads", Integer.parseInt(value)); else if (param.equals("--maxSpeed")) COConfigurationManager.setParameter("Max Upload Speed KBs", Integer.parseInt(value)); else return false; } return true; } catch (Exception e) { return false; } } private static void usage() { System.out.println("Usage : java org.gudy.azureus2.cl.Main [parameters] \"file.torrent\" \"save path\""); System.out.println("--maxUploads :\t\t Max number of simultaneous uploads"); System.out.println("--maxSpeed :\t\t Max upload speed in KBytes/sec"); SESecurityManager.exitVM(0); } }