update upload speed smoothing logic in plugin

pull/53/head
Zlatin Balevsky 2020-10-06 20:36:40 +01:00
parent fdf3a46ad4
commit f7aa04b8c7
No known key found for this signature in database
GPG Key ID: A72832072D525E41
2 changed files with 34 additions and 3 deletions

View File

@ -4,7 +4,6 @@ import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import com.muwire.core.Core; import com.muwire.core.Core;
import com.muwire.core.upload.UploadEvent; import com.muwire.core.upload.UploadEvent;
@ -69,11 +68,15 @@ public class UploadManager {
} }
} }
public static class UploaderWrapper { public class UploaderWrapper {
private volatile Uploader uploader; private volatile Uploader uploader;
private volatile int requests; private volatile int requests;
private volatile boolean finished; private volatile boolean finished;
private volatile int[] speedArray = new int[0];
private volatile int speedPos;
private volatile long lastSpeedRead = System.currentTimeMillis();
public Uploader getUploader() { public Uploader getUploader() {
return uploader; return uploader;
} }
@ -85,5 +88,33 @@ public class UploadManager {
public boolean isFinished() { public boolean isFinished() {
return finished; return finished;
} }
public int speed() {
if (speedArray.length != core.getMuOptions().getSpeedSmoothSeconds()) {
speedArray = new int[core.getMuOptions().getSpeedSmoothSeconds()];
speedPos = 0;
}
final long now = System.currentTimeMillis();
if (now < lastSpeedRead + 50)
return speedAverage();
int read = uploader.dataSinceLastRead();
int speed = (int) (1000.0d * read / (now - lastSpeedRead));
lastSpeedRead = now;
speedArray[speedPos++] = speed;
if (speedPos == speedArray.length)
speedPos = 0;
return speedAverage();
}
private int speedAverage() {
int total = 0;
for (int reading : speedArray)
total += reading;
return total / speedArray.length;
}
} }
} }

View File

@ -36,7 +36,7 @@ public class UploadServlet extends HttpServlet {
wrapper.getUploader().getDownloaderPersona().toBase64(), wrapper.getUploader().getDownloaderPersona().toBase64(),
wrapper.getUploader().getDonePieces(), wrapper.getUploader().getDonePieces(),
wrapper.getUploader().getTotalPieces(), wrapper.getUploader().getTotalPieces(),
wrapper.getUploader().speed(), wrapper.speed(),
wrapper.getUploader().isBrowseEnabled(), wrapper.getUploader().isBrowseEnabled(),
wrapper.getUploader().isFeedEnabled(), wrapper.getUploader().isFeedEnabled(),
browseManager.isBrowsing(downloader), browseManager.isBrowsing(downloader),