make host clear interval configurable

This commit is contained in:
Zlatin Balevsky
2019-06-25 07:41:20 +01:00
parent f11d461ec0
commit 2614cfbe5f
3 changed files with 8 additions and 5 deletions

View File

@@ -19,6 +19,7 @@ class MuWireSettings {
boolean shareDownloadedFiles
Set<String> watchedDirectories
float downloadSequentialRatio
int hostClearInterval
MuWireSettings() {
this(new Properties())
@@ -35,6 +36,7 @@ class MuWireSettings {
updateCheckInterval = Integer.parseInt(props.getProperty("updateCheckInterval","24"))
shareDownloadedFiles = Boolean.parseBoolean(props.getProperty("shareDownloadedFiles","true"))
downloadSequentialRatio = Float.valueOf(props.getProperty("downloadSequentialRatio","0.8"))
hostClearInterval = Integer.valueOf(props.getProperty("hostClearInterval","60"))
watchedDirectories = new HashSet<>()
if (props.containsKey("watchedDirectories")) {
@@ -55,6 +57,7 @@ class MuWireSettings {
props.setProperty("updateCheckInterval", String.valueOf(updateCheckInterval))
props.setProperty("shareDownloadedFiles", String.valueOf(shareDownloadedFiles))
props.setProperty("downloadSequentialRatio", String.valueOf(downloadSequentialRatio))
props.setProperty("hostClearInterval", String.valueOf(hostClearInterval))
if (!watchedDirectories.isEmpty()) {
String encoded = watchedDirectories.stream().

View File

@@ -5,9 +5,9 @@ import net.i2p.data.Destination
class Host {
private static final int MAX_FAILURES = 3
private static final int CLEAR_INTERVAL = 60 * 60 * 1000
final Destination destination
private final int clearInterval
int failures,successes
long lastAttempt
@@ -40,6 +40,6 @@ class Host {
}
synchronized void canTryAgain() {
System.currentTimeMillis() - lastAttempt > CLEAR_INTERVAL
System.currentTimeMillis() - lastAttempt > (clearInterval * 60 * 1000)
}
}

View File

@@ -52,7 +52,7 @@ class HostCache extends Service {
hosts.get(e.destination).clearFailures()
return
}
Host host = new Host(e.destination)
Host host = new Host(e.destination, settings.hostClearInterval)
if (allowHost(host)) {
hosts.put(e.destination, host)
}
@@ -64,7 +64,7 @@ class HostCache extends Service {
Destination dest = e.endpoint.destination
Host host = hosts.get(dest)
if (host == null) {
host = new Host(dest)
host = new Host(dest, settings.hostClearInterval)
hosts.put(dest, host)
}
@@ -106,7 +106,7 @@ class HostCache extends Service {
storage.eachLine {
def entry = slurper.parseText(it)
Destination dest = new Destination(entry.destination)
Host host = new Host(dest)
Host host = new Host(dest, settings.hostClearInterval)
host.failures = Integer.valueOf(String.valueOf(entry.failures))
host.successes = Integer.valueOf(String.valueOf(entry.successes))
if (entry.lastAttempt != null)