diff --git a/pom.xml b/pom.xml index 15db6c9ba..f2c315044 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.tonikelope MegaBasterd - 5.37 + 5.38 jar diff --git a/src/main/java/com/tonikelope/megabasterd/ChunkDownloader.java b/src/main/java/com/tonikelope/megabasterd/ChunkDownloader.java index 91ef34772..9ab347388 100644 --- a/src/main/java/com/tonikelope/megabasterd/ChunkDownloader.java +++ b/src/main/java/com/tonikelope/megabasterd/ChunkDownloader.java @@ -286,7 +286,10 @@ public class ChunkDownloader implements Runnable, SecureSingleThreadNotifiable { fo.close(); - chunk_file.renameTo(new File(_download.getDownload_path() + "/" + _download.getFile_name() + ".chunk" + chunk_id)); + if (chunk_reads == chunk_size) { + chunk_file.renameTo(new File(_download.getDownload_path() + "/" + _download.getFile_name() + ".chunk" + chunk_id)); + } + } else { chunk_reads = chunk_size; diff --git a/src/main/java/com/tonikelope/megabasterd/ChunkManager.java b/src/main/java/com/tonikelope/megabasterd/ChunkManager.java index f52580922..c5ea7195a 100644 --- a/src/main/java/com/tonikelope/megabasterd/ChunkManager.java +++ b/src/main/java/com/tonikelope/megabasterd/ChunkManager.java @@ -54,6 +54,9 @@ public final class ChunkManager implements Runnable, SecureSingleThreadNotifiabl _bytes_written = _download.getProgress(); } + + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Chunkmanager hello LAST CHUNK WRITTEN -> [{1}] {2}...", new Object[]{Thread.currentThread().getName(), _last_chunk_id_written, _bytes_written}); + } @Override @@ -113,7 +116,7 @@ public final class ChunkManager implements Runnable, SecureSingleThreadNotifiabl try { - Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Filewriter: let''s do some work!", Thread.currentThread().getName()); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Chunkmanager: let's do some work!", Thread.currentThread().getName()); if (_file_size > 0) { while (!_exit && (!_download.isStopped() || !_download.getChunkworkers().isEmpty()) && _bytes_written < _file_size) { @@ -136,6 +139,8 @@ public final class ChunkManager implements Runnable, SecureSingleThreadNotifiabl _bytes_written += chunk_file.length(); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Chunkmanager has written to disk chunk [{1}] {2} {3}...", new Object[]{Thread.currentThread().getName(), _last_chunk_id_written + 1, _bytes_written, calculateLastWrittenChunk(_bytes_written)}); + _last_chunk_id_written++; chunk_file.delete(); @@ -145,7 +150,7 @@ public final class ChunkManager implements Runnable, SecureSingleThreadNotifiabl if (!_exit && (!_download.isStopped() || !_download.getChunkworkers().isEmpty()) && _bytes_written < _file_size) { - Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Filewriter waiting for chunk [{1}]...", new Object[]{Thread.currentThread().getName(), _last_chunk_id_written + 1}); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Chunkmanager waiting for chunk [{1}]...", new Object[]{Thread.currentThread().getName(), _last_chunk_id_written + 1}); secureWait(); @@ -163,14 +168,14 @@ public final class ChunkManager implements Runnable, SecureSingleThreadNotifiabl _download.secureNotify(); - Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Filewriter: bye bye{1}", new Object[]{Thread.currentThread().getName(), _download.getFile().getName()}); + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Chunkmanager: bye bye{1}", new Object[]{Thread.currentThread().getName(), _download.getFile().getName()}); } private long calculateLastWrittenChunk(long temp_file_size) { if (temp_file_size > 3584 * 1024) { - return 7 + (long) Math.ceil((float) (temp_file_size - 3584 * 1024) / (1024 * 1024 * (_download.isUse_slots() ? Download.CHUNK_SIZE_MULTI : 1))); + return 7 + (long) Math.floor((float) (temp_file_size - 3584 * 1024) / (1024 * 1024 * (_download.isUse_slots() ? Download.CHUNK_SIZE_MULTI : 1))); } else { - int i = 0, tot = 0; + long i = 0, tot = 0; while (tot < temp_file_size) { i++; diff --git a/src/main/java/com/tonikelope/megabasterd/Download.java b/src/main/java/com/tonikelope/megabasterd/Download.java index 8d50aff36..ae75cd320 100644 --- a/src/main/java/com/tonikelope/megabasterd/Download.java +++ b/src/main/java/com/tonikelope/megabasterd/Download.java @@ -523,6 +523,9 @@ public final class Download implements Transference, Runnable, SecureSingleThrea long max_size = calculateMaxTempFileSize(_file.length()); if (max_size != _file.length()) { + + Logger.getLogger(getClass().getName()).log(Level.INFO, "{0} Downloader truncating mctemp file {1} -> {2} ", new Object[]{Thread.currentThread().getName(), _file.length(), max_size}); + getView().printStatusNormal("Truncating temp file..."); try (FileChannel out_truncate = new FileOutputStream(filename + ".mctemp", true).getChannel()) { @@ -1353,7 +1356,7 @@ public final class Download implements Transference, Runnable, SecureSingleThrea return reminder == 0 ? size : (size - reminder); } else { - int i = 0, tot = 0; + long i = 0, tot = 0; while (tot < size) { i++; diff --git a/src/main/java/com/tonikelope/megabasterd/MainPanel.java b/src/main/java/com/tonikelope/megabasterd/MainPanel.java index 3befd4ed1..c810faa43 100644 --- a/src/main/java/com/tonikelope/megabasterd/MainPanel.java +++ b/src/main/java/com/tonikelope/megabasterd/MainPanel.java @@ -47,7 +47,7 @@ import java.io.File; */ public final class MainPanel { - public static final String VERSION = "5.37"; + public static final String VERSION = "5.38"; public static final int THROTTLE_SLICE_SIZE = 16 * 1024; public static final int DEFAULT_BYTE_BUFFER_SIZE = 16 * 1024; public static final int STREAMER_PORT = 1337; diff --git a/src/main/java/com/tonikelope/megabasterd/Upload.java b/src/main/java/com/tonikelope/megabasterd/Upload.java index 4ab0a08fa..33454b241 100644 --- a/src/main/java/com/tonikelope/megabasterd/Upload.java +++ b/src/main/java/com/tonikelope/megabasterd/Upload.java @@ -1199,9 +1199,9 @@ public final class Upload implements Transference, Runnable, SecureSingleThreadN public long calculateLastUploadedChunk(long bytes_read) { if (bytes_read > 3584 * 1024) { - return 7 + (long) Math.ceil((float) (bytes_read - 3584 * 1024) / (1024 * 1024)); + return 7 + (long) Math.ceil((float) (bytes_read - 3584 * 1024) / (1024 * 1024 * Upload.CHUNK_SIZE_MULTI)); } else { - int i = 0, tot = 0; + long i = 0, tot = 0; while (tot < bytes_read) { i++;