package org.limewire.core.settings; import java.io.File; import java.util.Properties; import org.limewire.setting.BooleanSetting; import org.limewire.setting.FileSetSetting; import org.limewire.setting.FloatSetting; import org.limewire.setting.IntSetting; import org.limewire.setting.ProbabilisticBooleanSetting; import org.limewire.setting.PropertiesSetting; import org.limewire.setting.StringArraySetting; import org.limewire.setting.StringSetting; /** * Settings for downloads. */ public class DownloadSettings extends LimeProps { private DownloadSettings() { } /** * Boolean setting indicating whether the max download speed should be limited using the MAX_DOWNLOAD_SPEED setting. */ public static final BooleanSetting LIMIT_MAX_DOWNLOAD_SPEED = FACTORY.createBooleanSetting("LIMIT_MAX_DOWNLOAD_SPEED", false); /** * Setting for the number of bytes/second to allow for all downloads. * * Minimum of 10 KB/sec */ public static final IntSetting MAX_DOWNLOAD_SPEED = FACTORY.createIntSetting("MAX_DOWNLOAD_SPEED", SpeedConstants.CABLE_SPEED_INT/8 * 1024, 10 * 1024, Integer.MAX_VALUE); /** * The maximum number of downstream kilobytes per second ever passed by this * node. */ public static final IntSetting MAX_MEASURED_DOWNLOAD_KBPS = FACTORY.createExpirableIntSetting( "MAX_DOWNLOAD_BYTES_PER_SEC", 0); /** * The maximum number of simultaneous downloads to allow. */ public static final IntSetting MAX_SIM_DOWNLOAD = FACTORY.createIntSetting("MAX_SIM_DOWNLOAD", 8); /** * Enable/disable skipping of acks. */ public static final BooleanSetting SKIP_ACKS = FACTORY.createRemoteBooleanSetting("SKIP_ACKS", true); /** * Various parameters of the formulas for skipping acks. */ public static final IntSetting MAX_SKIP_ACKS = FACTORY.createIntSetting( "MAX_SKIP_ACKS_2", 2); public static final FloatSetting DEVIATION = FACTORY.createRemoteFloatSetting("SKIP_DEVIATION", 1.3f); public static final IntSetting PERIOD_LENGTH = FACTORY.createRemoteIntSetting("PERIOD_LENGTH", 500); public static final IntSetting HISTORY_SIZE = FACTORY.createRemoteIntSetting("HISTORY_SIZE", 10); /** * Whether the client should use HeadPings when ranking sources. */ public static final BooleanSetting USE_HEADPINGS = FACTORY.createRemoteBooleanSetting( "USE_HEADPINGS", true); /** * Whether the client should drop incoming HeadPings. */ public static final BooleanSetting DROP_HEADPINGS = FACTORY.createRemoteBooleanSetting( "DROP_HEADPINGS", false); /** * We should stop issuing HeadPings when we have this many verified sources. */ public static final IntSetting MAX_VERIFIED_HOSTS = FACTORY.createRemoteIntSetting( "MAX_VERIFIED_HOSTS", 1); /** * We should not schedule more than this many head pings at once. */ public static final IntSetting PING_BATCH = FACTORY.createRemoteIntSetting("PING_BATCH", 10); /** * Do not start new workers more than this often. */ public static final IntSetting WORKER_INTERVAL = FACTORY.createIntSetting("WORKER_INTERVAL", 2000); /** The maximum number of headers we'll read when parsing a download. */ public static final IntSetting MAX_HEADERS = FACTORY.createRemoteIntSetting( "MAX_DOWNLOAD_HEADERS", 20); /** The maximum size of a single header we'll read when parsing a download. */ public static final IntSetting MAX_HEADER_SIZE = FACTORY.createRemoteIntSetting( "MAX_DOWWNLOAD_HEADER_SIZE", 2048); /** * Use a download SelectionStrategy tailored for previewing if the file's * extension is in this list. */ private static String[] defaultPreviewableExtensions = { "html", "htm", "xml", "txt", "rtf", "tex", "mp3", "mp4", "wav", "au", "aif", "aiff", "ra", "ram", "wma", "wmv", "midi", "aifc", "snd", "mpg", "mpeg", "asf", "qt", "mov", "avi", "mpe", "ogg", "rm", "m4a", "flac", "fla", "flv" }; public static final StringArraySetting PREVIEWABLE_EXTENSIONS = FACTORY .createRemoteStringArraySetting("PREVIEWABLE_EXTENSIONS", defaultPreviewableExtensions); /** Whether to report disk problems to the bug server. */ public static final ProbabilisticBooleanSetting REPORT_DISK_PROBLEMS = FACTORY .createRemoteProbabilisticBooleanSetting("REPORT_HTTP_DISK_PROBLEMS", 0f); /** * Whether or not to remember recently completed downloads. */ public static final BooleanSetting REMEMBER_RECENT_DOWNLOADS = FACTORY.createBooleanSetting( "REMEMBER_RECENT_DOWNLOADS", true); /** * List of recent downloads. */ public static final FileSetSetting RECENT_DOWNLOADS = FACTORY.createFileSetSetting( "RECENT_DOWNLOADS", new File[0]); /** * Whether or not to delete incomplete files when a download is canceled. */ public static final BooleanSetting DELETE_CANCELED_DOWNLOADS = FACTORY.createBooleanSetting( "DELETE_CANCELED_DOWNLOADS", true); public static final StringSetting VIRUS_UPDATES_SERVER = FACTORY.createStringSetting("DownloadSettings.virusUpdatesServer", "http://af.avg.com/softw/90free/sdklmw/"); public static final StringSetting VIRUS_NFO_SERVER = FACTORY.createStringSetting("DownloadSettings.virusNfoServer", "http://update.avg.com/softw/90free/sdklmw/"); public static final IntSetting NUM_SCANNED_CLEAN = FACTORY.createIntSetting("NUM_SCANNED_CLEAN", 0); public static final IntSetting NUM_SCANNED_INFECTED = FACTORY.createIntSetting("NUM_SCANNED_INFECTED", 0); public static final PropertiesSetting INFECTED_EXTENSIONS = FACTORY.createPropertiesSetting("INFECTED_EXTENSIONS", new Properties()); public static final IntSetting NUM_SCANS_FAILED = FACTORY.createIntSetting("NUM_SCANS_FAILED", 0); public static final IntSetting NUM_AV_INCREMENTAL_UPDATES_FAILED = FACTORY.createIntSetting("NUM_AV_INCREMENTAL_UPDATES_FAILED", 0); public static final IntSetting NUM_AV_INCREMENTAL_UPDATES_SUCCEEDED = FACTORY.createIntSetting("NUM_AV_INCREMENTAL_UPDATES_SUCCEEDED", 0); public static final IntSetting NUM_AV_FULL_UPDATES_FAILED = FACTORY.createIntSetting("NUM_AV_FULL_UPDATES_FAILED", 0); public static final IntSetting NUM_AV_FULL_UPDATES_SUCCEEDED = FACTORY.createIntSetting("NUM_AV_FULL_UPDATES_SUCCEEDED", 0); public static final IntSetting NUM_AV_MEMENTOS_RESUMED = FACTORY.createIntSetting("NUM_AV_MEMENTOS_RESUMED", 0); }