package org.limewire.core.settings; import java.io.File; import org.limewire.setting.BooleanSetting; import org.limewire.setting.FileSetting; import org.limewire.setting.FloatSetting; import org.limewire.setting.IntSetting; import org.limewire.setting.StringArraySetting; import org.limewire.util.CommonUtils; /** * BitTorrent settings. */ public class BittorrentSettings extends LimeProps { private BittorrentSettings() { // empty constructor } /** * Whether to show a popup dialog allowing the user to select files within * the torrent to download prior to starting the download. */ public static final BooleanSetting TORRENT_SHOW_POPUP_BEFORE_DOWNLOADING = FACTORY .createBooleanSetting("TORRENT_SHOW_POPUP_BEFORE_DOWNLOADING", true); /** * Setting for whether or not be want to report issues loading the * libtorrent libraries. */ public static final BooleanSetting LIBTORRENT_REPORT_LIBRARY_LOAD_FAILURE = FACTORY .createRemoteBooleanSetting("LIBTORRENT_REPORT_LIBRARY_LOAD_FAILURE", false); /** * Setting for whether or not torrents should use UPNP. */ public static final BooleanSetting TORRENT_USE_UPNP = FACTORY.createBooleanSetting( "TORRENT_USE_UPNP", true); /** * Whether or not libtorrent is enabled and we should try loading the * libtorrent libraries. */ public static final BooleanSetting LIBTORRENT_ENABLED = FACTORY.createBooleanSetting( "LIBTORRENT_ENABLED", true); /** * The start listening port for listening for bittorrent connections. * Libtorrent picks the first available port with in the range of the start * to end ports. */ public static final IntSetting LIBTORRENT_LISTEN_START_PORT = FACTORY.createIntSetting( "LIBTORRENT_LISTEN_START_PORT", 6881); /** * The end listening port for listening for bittorrent connections. * Libtorrent picks the first available port with in the range of the start * to end ports. */ public static final IntSetting LIBTORRENT_LISTEN_END_PORT = FACTORY.createIntSetting( "LIBTORRENT_LISTEN_END_PORT", 6889); /** * The folder where all the upload mementos are saved for torrents. */ public static FileSetting TORRENT_UPLOADS_FOLDER = FACTORY.createFileSetting( "TORRENT_UPLOADS_FOLDER", new File(CommonUtils.getUserSettingsDir(), "uploads.dat/")); /** * The target seed ratio for torrents. Torrents which have met this ratio * will be removed. This number is also used via the libtorrent queuing * algorithm when trying to decide to queue/dequeue automanaged torrents. * This limit only effect automanaged torrents. * * When the UPLOAD_TORRENTS_FOREVER setting is set to true, no matter what * the value of this setting is, it will pass the maximum value to * libtorrent. */ public static final FloatSetting LIBTORRENT_SEED_RATIO_LIMIT = FACTORY.createFloatSetting( "LIBTORRENT_SEED_RATIO_LIMIT", 2.0f, 0.00f, Float.MAX_VALUE); /** * The target seed time ratio limit. The amount of time trying to seed over * the amount of time it took to download the torrent. This number is also * used via the libtorrent queuing algorithm when trying to decide to * queue/dequeue automanaged torrents. This limit only effect automanaged * torrents. */ public static final FloatSetting LIBTORRENT_SEED_TIME_RATIO_LIMIT = FACTORY.createFloatSetting( "LIBTORRENT_SEED_TIME_RATIO_LIMIT", 7f); /** * The target seed time limit. The amount time the torrent will actively try * to be seeded for. This number is also used via the libtorrent queuing * algorithm when trying to decide to queue/dequeue automanaged torrents. * This limit only effect automanaged torrents, but will take other torrents * into account as we. * * When the UPLOAD_TORRENTS_FOREVER setting is set to true, no matter what * the value of this setting is, it will pass the maximum value to * libtorrent. */ public static final IntSetting LIBTORRENT_SEED_TIME_LIMIT = FACTORY.createIntSetting( "LIBTORRENT_SEED_TIME_LIMIT", 60 * 60 * 24, 0, Integer.MAX_VALUE);// 24 // hours // default /** * The total number of active downloads limit. This number is also used via * the libtorrent queuing algorithm when trying to decide to queue/dequeue * automanaged torrents. This limit only effect automanaged torrents, but * will take other torrents into account as we. */ public static final IntSetting LIBTORRENT_ACTIVE_DOWNLOADS_LIMIT = FACTORY.createIntSetting( "LIBTORRENT_ACTIVE_DOWNLOADS_LIMIT", 8); /** * The total number of active seeds limit. This number is also used via the * libtorrent queuing algorithm when trying to decide to queue/dequeue * automanaged torrents. This limit only effect automanaged torrents, but * will take other torrents into account as we. */ public static final IntSetting LIBTORRENT_ACTIVE_SEEDS_LIMIT = FACTORY.createIntSetting( "LIBTORRENT_ACTIVE_SEEDS_LIMIT", 5); /** * The total number of active torrents limit. This number is also used via * the libtorrent queuing algorithm when trying to decide to queue/dequeue * automanaged torrents. This limit only effect automanaged torrents, but * will take other torrents into account as we. */ public static final IntSetting LIBTORRENT_ACTIVE_LIMIT = FACTORY.createIntSetting( "LIBTORRENT_ACTIVE_LIMIT", 15); /** * The maximum number of torrents that can be seeded at once. One the limit * is reached seeding torrents will be stopped. */ public static final IntSetting TORRENT_SEEDING_LIMIT = FACTORY.createRemoteIntSetting( "TORRENT_SEEDING_LIMIT", 40); /** * This setting will cause torrents to upload forever, and will not limit * how long or to what seed ratio the torrents will seed. */ public static final BooleanSetting UPLOAD_TORRENTS_FOREVER = FACTORY.createBooleanSetting( "UPLOAD_TORRENTS_FOREVER", false); /** * The file that previous dht states have been stored in. */ public static final FileSetting LIBTORRENT_DHT_STATE = FACTORY.createFileSetting( "LIBTORRENT_DHT_STATE", new File(CommonUtils.getUserSettingsDir(), "libtorrent/libtorrentdht.dat")); /** * Contains a list of dht router address and ip pairs to allow libtorrent to * find dht nodes, when we have none. */ public static final StringArraySetting TORRENT_BOOTSTRAP_DHT_ROUTERS = FACTORY .createRemoteStringArraySetting("TORRENT_DHT_ROUTERS", new String[] { "router.bittorrent.com:6881", "router.utorrent.com:6881", "router.bitcomet.com:6881" }); }