From d2861ece69415c3e8a4962ab673c1460d6136d6c Mon Sep 17 00:00:00 2001 From: Jonathan Bauer Date: Mon, 27 Oct 2014 14:25:56 +0100 Subject: [client] rework upload code, should fix upload rate problems --- dozentenmodul/src/main/java/ftp/UploadTask.java | 58 +++++++++++++++---------- 1 file changed, 34 insertions(+), 24 deletions(-) (limited to 'dozentenmodul/src/main/java/ftp/UploadTask.java') diff --git a/dozentenmodul/src/main/java/ftp/UploadTask.java b/dozentenmodul/src/main/java/ftp/UploadTask.java index eff96d68..40a79f55 100644 --- a/dozentenmodul/src/main/java/ftp/UploadTask.java +++ b/dozentenmodul/src/main/java/ftp/UploadTask.java @@ -18,14 +18,18 @@ import models.Image; * */ public class UploadTask extends SwingWorker { - + /** - * Logger instance for this class. + * Logger instance for this class. */ private final static Logger LOGGER = Logger.getLogger(UploadTask.class); - + // 8MB buffer - private static final int BUFFER_SIZE = 8 * 1024 * 1024;; + private static final int BUFFER_SIZE = 1024 * 1024; + + private static final double UPDATE_INTERVAL_SECONDS = 0.6; + private static final double UPDATE_INTERVAL_MS = UPDATE_INTERVAL_SECONDS * 1000; + private static final double BYTES_PER_MIB = 1024 * 1024; private String host; private int port; @@ -64,21 +68,28 @@ public class UploadTask extends SwingWorker { percentCompleted = 0; long fileSize = uploadFile.length(); Image.image.setFilesize(fileSize); - long start = System.nanoTime(); - final double NANOS_PER_SECOND = 1000000000.0; - final double BYTES_PER_MIB = 1024 * 1024; - while ((bytesRead = inputStream.read(buffer)) != -1 - && isCancelled() == false) { + firePropertyChange("filesize", 0, fileSize); + long lastUpdate = 0; + long currentBytes = 0; + long lastBytes = 0; + while ((bytesRead = inputStream.read(buffer)) != -1 && !isCancelled()) { util.writeFileBytes(buffer, 0, bytesRead); - totalBytesRead += bytesRead; - percentCompleted = (int) (totalBytesRead * 100 / fileSize); - double speed = NANOS_PER_SECOND / BYTES_PER_MIB - * totalBytesRead / (System.nanoTime() - start + 1); - setProgress(percentCompleted); - firePropertyChange("speed", 0, speed); - firePropertyChange("filesize", 0, fileSize); - firePropertyChange("bytesread", 0, totalBytesRead); + currentBytes += bytesRead; + long now = System.currentTimeMillis(); + if (lastUpdate + UPDATE_INTERVAL_MS < now) { + totalBytesRead += currentBytes; + percentCompleted = (int) ((totalBytesRead * 100) / fileSize); + setProgress(percentCompleted); + lastBytes = (lastBytes * 2 + currentBytes) / 3; + final double speed = lastBytes / UPDATE_INTERVAL_SECONDS; + firePropertyChange("speed", 0, speed / BYTES_PER_MIB); + firePropertyChange("bytesread", 0, totalBytesRead); + lastUpdate = now; + currentBytes = 0; + } } + percentCompleted = (int) ((totalBytesRead * 100) / fileSize); + setProgress(percentCompleted); inputStream.close(); @@ -102,16 +113,15 @@ public class UploadTask extends SwingWorker { */ @Override protected void done() { - if (!isCancelled() && percentCompleted==100) { + if (!isCancelled() && percentCompleted == 100) { LOGGER.info("Datei erfolgreich hochgeladen."); - JOptionPane.showMessageDialog(null, - "Datei erfolgreich hochgeladen.", "Message", - JOptionPane.INFORMATION_MESSAGE); - } else if(!isCancelled() && percentCompleted != 100){ + JOptionPane.showMessageDialog(null, "Datei erfolgreich hochgeladen.", + "Message", JOptionPane.INFORMATION_MESSAGE); + } else if (!isCancelled() && percentCompleted != 100) { LOGGER.error("Datei wurde unvollständig hochgeladen."); JOptionPane.showMessageDialog(null, - "Datei wurde unvollständig hochgeladen. Bitte wiederholen.", "Message", - JOptionPane.INFORMATION_MESSAGE); + "Datei wurde unvollständig hochgeladen. Bitte wiederholen.", + "Message", JOptionPane.INFORMATION_MESSAGE); } } } -- cgit v1.2.3-55-g7522 From 56733637669d300b472be062fc7a85a49ede3322 Mon Sep 17 00:00:00 2001 From: Jonathan Bauer Date: Mon, 27 Oct 2014 19:08:53 +0100 Subject: [client] fix uploads not completing --- dozentenmodul/src/main/java/ftp/UploadTask.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'dozentenmodul/src/main/java/ftp/UploadTask.java') diff --git a/dozentenmodul/src/main/java/ftp/UploadTask.java b/dozentenmodul/src/main/java/ftp/UploadTask.java index 40a79f55..4bf4ad1f 100644 --- a/dozentenmodul/src/main/java/ftp/UploadTask.java +++ b/dozentenmodul/src/main/java/ftp/UploadTask.java @@ -75,9 +75,9 @@ public class UploadTask extends SwingWorker { while ((bytesRead = inputStream.read(buffer)) != -1 && !isCancelled()) { util.writeFileBytes(buffer, 0, bytesRead); currentBytes += bytesRead; + totalBytesRead += currentBytes; long now = System.currentTimeMillis(); if (lastUpdate + UPDATE_INTERVAL_MS < now) { - totalBytesRead += currentBytes; percentCompleted = (int) ((totalBytesRead * 100) / fileSize); setProgress(percentCompleted); lastBytes = (lastBytes * 2 + currentBytes) / 3; -- cgit v1.2.3-55-g7522 From 3d1295e19c2e5a23676b79fbd7bfad53619a94f5 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Mon, 27 Oct 2014 19:55:14 +0100 Subject: Revert "[client] fix uploads not completing" This reverts commit 56733637669d300b472be062fc7a85a49ede3322. --- dozentenmodul/src/main/java/ftp/UploadTask.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'dozentenmodul/src/main/java/ftp/UploadTask.java') diff --git a/dozentenmodul/src/main/java/ftp/UploadTask.java b/dozentenmodul/src/main/java/ftp/UploadTask.java index 4bf4ad1f..40a79f55 100644 --- a/dozentenmodul/src/main/java/ftp/UploadTask.java +++ b/dozentenmodul/src/main/java/ftp/UploadTask.java @@ -75,9 +75,9 @@ public class UploadTask extends SwingWorker { while ((bytesRead = inputStream.read(buffer)) != -1 && !isCancelled()) { util.writeFileBytes(buffer, 0, bytesRead); currentBytes += bytesRead; - totalBytesRead += currentBytes; long now = System.currentTimeMillis(); if (lastUpdate + UPDATE_INTERVAL_MS < now) { + totalBytesRead += currentBytes; percentCompleted = (int) ((totalBytesRead * 100) / fileSize); setProgress(percentCompleted); lastBytes = (lastBytes * 2 + currentBytes) / 3; -- cgit v1.2.3-55-g7522 From 79a8d56ef937c54c59a44fd67c114bd0db719d4c Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Mon, 27 Oct 2014 20:13:34 +0100 Subject: [client] Fix upload not completing --- dozentenmodul/src/main/java/ftp/UploadTask.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'dozentenmodul/src/main/java/ftp/UploadTask.java') diff --git a/dozentenmodul/src/main/java/ftp/UploadTask.java b/dozentenmodul/src/main/java/ftp/UploadTask.java index 40a79f55..06ee4c37 100644 --- a/dozentenmodul/src/main/java/ftp/UploadTask.java +++ b/dozentenmodul/src/main/java/ftp/UploadTask.java @@ -75,9 +75,9 @@ public class UploadTask extends SwingWorker { while ((bytesRead = inputStream.read(buffer)) != -1 && !isCancelled()) { util.writeFileBytes(buffer, 0, bytesRead); currentBytes += bytesRead; + totalBytesRead += bytesRead; long now = System.currentTimeMillis(); if (lastUpdate + UPDATE_INTERVAL_MS < now) { - totalBytesRead += currentBytes; percentCompleted = (int) ((totalBytesRead * 100) / fileSize); setProgress(percentCompleted); lastBytes = (lastBytes * 2 + currentBytes) / 3; -- cgit v1.2.3-55-g7522 From 7c7c3d4b9006ab63a0899aa8ce16ff46814fa7ed Mon Sep 17 00:00:00 2001 From: Jonathan Bauer Date: Tue, 28 Oct 2014 12:39:11 +0100 Subject: [client] fixes "fertig stellen" button not beeing activated when download finishes --- dozentenmodul/src/main/java/ftp/UploadTask.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'dozentenmodul/src/main/java/ftp/UploadTask.java') diff --git a/dozentenmodul/src/main/java/ftp/UploadTask.java b/dozentenmodul/src/main/java/ftp/UploadTask.java index 06ee4c37..68af1f3c 100644 --- a/dozentenmodul/src/main/java/ftp/UploadTask.java +++ b/dozentenmodul/src/main/java/ftp/UploadTask.java @@ -61,17 +61,17 @@ public class UploadTask extends SwingWorker { util.uploadFile(uploadFile, destDir); FileInputStream inputStream = new FileInputStream(uploadFile); - byte[] buffer = new byte[BUFFER_SIZE]; - int bytesRead = -1; - int i = 0; - long totalBytesRead = 0; - percentCompleted = 0; long fileSize = uploadFile.length(); Image.image.setFilesize(fileSize); firePropertyChange("filesize", 0, fileSize); + + percentCompleted = 0; + byte[] buffer = new byte[BUFFER_SIZE]; + int bytesRead = -1; + long totalBytesRead = 0; long lastUpdate = 0; - long currentBytes = 0; long lastBytes = 0; + long currentBytes = 0; while ((bytesRead = inputStream.read(buffer)) != -1 && !isCancelled()) { util.writeFileBytes(buffer, 0, bytesRead); currentBytes += bytesRead; @@ -90,7 +90,7 @@ public class UploadTask extends SwingWorker { } percentCompleted = (int) ((totalBytesRead * 100) / fileSize); setProgress(percentCompleted); - + firePropertyChange("bytesread", 0, totalBytesRead); inputStream.close(); util.finish(); -- cgit v1.2.3-55-g7522