From 2de18227c18b69b358af7f57d7cfd701f95a53ef Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Sun, 23 Jun 2019 07:48:49 +0100 Subject: [PATCH] persist pause state --- core/src/main/groovy/com/muwire/core/Core.groovy | 4 +++- .../com/muwire/core/download/DownloadManager.groovy | 11 ++++++++++- .../muwire/core/download/UIDownloadPausedEvent.groovy | 6 ++++++ .../com/muwire/gui/MainFrameController.groovy | 2 ++ 4 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 core/src/main/groovy/com/muwire/core/download/UIDownloadPausedEvent.groovy diff --git a/core/src/main/groovy/com/muwire/core/Core.groovy b/core/src/main/groovy/com/muwire/core/Core.groovy index 250acf64..96220a0c 100644 --- a/core/src/main/groovy/com/muwire/core/Core.groovy +++ b/core/src/main/groovy/com/muwire/core/Core.groovy @@ -16,6 +16,7 @@ import com.muwire.core.download.DownloadManager import com.muwire.core.download.SourceDiscoveredEvent import com.muwire.core.download.UIDownloadCancelledEvent import com.muwire.core.download.UIDownloadEvent +import com.muwire.core.download.UIDownloadPausedEvent import com.muwire.core.files.FileDownloadedEvent import com.muwire.core.files.FileHashedEvent import com.muwire.core.files.FileHasher @@ -217,7 +218,8 @@ public class Core { eventBus.register(FileDownloadedEvent.class, downloadManager) eventBus.register(UIDownloadCancelledEvent.class, downloadManager) eventBus.register(SourceDiscoveredEvent.class, downloadManager) - + eventBus.register(UIDownloadPausedEvent.class, downloadManager) + log.info("initializing upload manager") UploadManager uploadManager = new UploadManager(eventBus, fileManager, meshManager, downloadManager) diff --git a/core/src/main/groovy/com/muwire/core/download/DownloadManager.groovy b/core/src/main/groovy/com/muwire/core/download/DownloadManager.groovy index bd28907e..da17e667 100644 --- a/core/src/main/groovy/com/muwire/core/download/DownloadManager.groovy +++ b/core/src/main/groovy/com/muwire/core/download/DownloadManager.groovy @@ -90,6 +90,10 @@ public class DownloadManager { persistDownloaders() } + public void onUIDownloadPausedEvent(UIDownloadPausedEvent e) { + persistDownloaders() + } + void resume(Downloader downloader) { executor.execute({downloader.download() as Runnable}) } @@ -119,7 +123,10 @@ public class DownloadManager { def downloader = new Downloader(eventBus, this, me, file, (long)json.length, infoHash, json.pieceSizePow2, connector, destinations, incompletes, pieces) - downloaders.put(infoHash, downloader) + if (json.paused != null) + downloader.paused = json.paused + if (!downloader.paused) + downloaders.put(infoHash, downloader) downloader.download() eventBus.publish(new DownloadStartedEvent(downloader : downloader)) } @@ -174,6 +181,8 @@ public class DownloadManager { json.hashList = Base64.encode(infoHash.hashList) else json.hashRoot = Base64.encode(infoHash.getRoot()) + + json.paused = downloader.paused writer.println(JsonOutput.toJson(json)) } } diff --git a/core/src/main/groovy/com/muwire/core/download/UIDownloadPausedEvent.groovy b/core/src/main/groovy/com/muwire/core/download/UIDownloadPausedEvent.groovy new file mode 100644 index 00000000..cff74afd --- /dev/null +++ b/core/src/main/groovy/com/muwire/core/download/UIDownloadPausedEvent.groovy @@ -0,0 +1,6 @@ +package com.muwire.core.download + +import com.muwire.core.Event + +class UIDownloadPausedEvent extends Event { +} diff --git a/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy b/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy index 5a2c1932..7e1b4de2 100644 --- a/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy +++ b/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy @@ -17,6 +17,7 @@ import com.muwire.core.Core import com.muwire.core.download.DownloadStartedEvent import com.muwire.core.download.UIDownloadCancelledEvent import com.muwire.core.download.UIDownloadEvent +import com.muwire.core.download.UIDownloadPausedEvent import com.muwire.core.search.QueryEvent import com.muwire.core.search.SearchEvent import com.muwire.core.trust.TrustEvent @@ -170,6 +171,7 @@ class MainFrameController { void pause() { def downloader = model.downloads[selectedDownload()].downloader downloader.pause() + core.eventBus.publish(new UIDownloadPausedEvent()) } private void markTrust(String tableName, TrustLevel level, def list) {