diff options
| author | Simon Rettberg | 2015-08-04 17:15:25 +0200 |
|---|---|---|
| committer | Simon Rettberg | 2015-08-04 17:15:25 +0200 |
| commit | ae0f646cd73486f04ef819750cd4eb9dc9bb7894 (patch) | |
| tree | 3a39b6a3228aa06ab7741f33f256a81fd807a4a0 | |
| parent | [client] Synchronize logging events in DebugWindow (diff) | |
| download | tutor-module-ae0f646cd73486f04ef819750cd4eb9dc9bb7894.tar.gz tutor-module-ae0f646cd73486f04ef819750cd4eb9dc9bb7894.tar.xz tutor-module-ae0f646cd73486f04ef819750cd4eb9dc9bb7894.zip | |
[client] Fix TransferTask initiating a huge amount of connections
| -rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/TransferTask.java | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/TransferTask.java b/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/TransferTask.java index d2781cb9..45efe72f 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/TransferTask.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/TransferTask.java @@ -31,7 +31,7 @@ public abstract class TransferTask implements Runnable { */ private final List<TransferEventListener> listeners = new ArrayList<>(); - private volatile boolean isRunning = true; + private volatile boolean isComplete = false; private volatile boolean isCancelled = false; private boolean endgame = false; private int minConnectionCount = 1; @@ -57,7 +57,6 @@ public abstract class TransferTask implements Runnable { ensureActivity(); Util.sleep(UPDATE_INTERVAL_MS); } - isRunning = false; List<TransferThread> joinList = new ArrayList<>(); synchronized (transfers) { isCancelled = true; @@ -79,8 +78,8 @@ public abstract class TransferTask implements Runnable { // By default, this does nothing } - public boolean isRunning() { - return isRunning; + public boolean isComplete() { + return isComplete; } public boolean isCanceled() { @@ -140,7 +139,7 @@ public abstract class TransferTask implements Runnable { private final void ensureActivity() { synchronized (transfers) { - if (isCancelled) + if (isCancelled || isComplete) return; if (endgame && (!transfers.isEmpty() || !connectingTransfers.isEmpty())) return; @@ -157,8 +156,6 @@ public abstract class TransferTask implements Runnable { thread.setDaemon(true); connectingTransfers.add(thread); thread.start(); - LOGGER.debug("Made new transfer. Connecting: " + connectingTransfers.size() - + ", Active: " + transfers.size()); } } } @@ -201,10 +198,12 @@ public abstract class TransferTask implements Runnable { LOGGER.debug("Enabled endgame mode"); endgame = true; } + if (success && transfers.isEmpty()) { + LOGGER.debug("Transfer finished"); + isComplete = true; + } } - if (!endgame) { - ensureActivity(); - } + ensureActivity(); } /** |
