From edebde2bf427ba911e8df539d52e291edb074586 Mon Sep 17 00:00:00 2001 From: akwizgran Date: Fri, 7 May 2021 13:45:12 +0100 Subject: [PATCH] Add task factory. --- .../api/plugin/file/RemovableDriveTask.java | 2 +- .../file/RemovableDriveManagerImpl.java | 14 ++++---- .../plugin/file/RemovableDriveModule.java | 6 ++++ .../file/RemovableDriveTaskFactory.java | 17 +++++++++ .../file/RemovableDriveTaskFactoryImpl.java | 36 +++++++++++++++++++ .../plugin/file/RemovableDriveTaskImpl.java | 2 +- 6 files changed, 67 insertions(+), 10 deletions(-) create mode 100644 bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveTaskFactory.java create mode 100644 bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveTaskFactoryImpl.java diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/file/RemovableDriveTask.java b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/file/RemovableDriveTask.java index 08165c267..3bc4c1837 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/file/RemovableDriveTask.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/file/RemovableDriveTask.java @@ -6,7 +6,7 @@ import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import java.io.File; @NotNullByDefault -public interface RemovableDriveTask { +public interface RemovableDriveTask extends Runnable { /** * Returns the file that this task is reading from or writing to. diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveManagerImpl.java index 4b6d9dffc..3752449fa 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveManagerImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveManagerImpl.java @@ -1,7 +1,6 @@ package org.briarproject.bramble.plugin.file; import org.briarproject.bramble.api.contact.ContactId; -import org.briarproject.bramble.api.event.EventExecutor; import org.briarproject.bramble.api.lifecycle.IoExecutor; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.plugin.file.RemovableDriveManager; @@ -20,7 +19,8 @@ import javax.inject.Inject; class RemovableDriveManagerImpl implements RemovableDriveManager, RemovableDriveTaskRegistry { - private final Executor ioExecutor, eventExecutor; + private final Executor ioExecutor; + private final RemovableDriveTaskFactory taskFactory; private final ConcurrentHashMap readers = new ConcurrentHashMap<>(); private final ConcurrentHashMap @@ -28,9 +28,9 @@ class RemovableDriveManagerImpl @Inject RemovableDriveManagerImpl(@IoExecutor Executor ioExecutor, - @EventExecutor Executor eventExecutor) { + RemovableDriveTaskFactory taskFactory) { this.ioExecutor = ioExecutor; - this.eventExecutor = eventExecutor; + this.taskFactory = taskFactory; } @Nullable @@ -47,8 +47,7 @@ class RemovableDriveManagerImpl @Override public RemovableDriveTask startReaderTask(ContactId c, File f) { - RemovableDriverReaderTask task = - new RemovableDriverReaderTask(eventExecutor, this, c, f); + RemovableDriveTask task = taskFactory.createReader(this, c, f); RemovableDriveTask old = readers.putIfAbsent(c, task); if (old == null) { ioExecutor.execute(task); @@ -60,8 +59,7 @@ class RemovableDriveManagerImpl @Override public RemovableDriveTask startWriterTask(ContactId c, File f) { - RemovableDriverWriterTask task = - new RemovableDriverWriterTask(eventExecutor, this, c, f); + RemovableDriveTask task = taskFactory.createWriter(this, c, f); RemovableDriveTask old = writers.putIfAbsent(c, task); if (old == null) { ioExecutor.execute(task); diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveModule.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveModule.java index 92455bb3a..3857cc338 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveModule.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveModule.java @@ -16,4 +16,10 @@ public class RemovableDriveModule { RemovableDriveManagerImpl removableDriveManager) { return removableDriveManager; } + + @Provides + RemovableDriveTaskFactory provideTaskFactory( + RemovableDriveTaskFactoryImpl taskFactory) { + return taskFactory; + } } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveTaskFactory.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveTaskFactory.java new file mode 100644 index 000000000..a81f88249 --- /dev/null +++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveTaskFactory.java @@ -0,0 +1,17 @@ +package org.briarproject.bramble.plugin.file; + +import org.briarproject.bramble.api.contact.ContactId; +import org.briarproject.bramble.api.nullsafety.NotNullByDefault; +import org.briarproject.bramble.api.plugin.file.RemovableDriveTask; + +import java.io.File; + +@NotNullByDefault +interface RemovableDriveTaskFactory { + + RemovableDriveTask createReader(RemovableDriveTaskRegistry registry, + ContactId c, File f); + + RemovableDriveTask createWriter(RemovableDriveTaskRegistry registry, + ContactId c, File f); +} diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveTaskFactoryImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveTaskFactoryImpl.java new file mode 100644 index 000000000..b46f659d4 --- /dev/null +++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveTaskFactoryImpl.java @@ -0,0 +1,36 @@ +package org.briarproject.bramble.plugin.file; + +import org.briarproject.bramble.api.contact.ContactId; +import org.briarproject.bramble.api.event.EventExecutor; +import org.briarproject.bramble.api.nullsafety.NotNullByDefault; +import org.briarproject.bramble.api.plugin.file.RemovableDriveTask; + +import java.io.File; +import java.util.concurrent.Executor; + +import javax.annotation.concurrent.Immutable; +import javax.inject.Inject; + +@Immutable +@NotNullByDefault +class RemovableDriveTaskFactoryImpl implements RemovableDriveTaskFactory { + + private final Executor eventExecutor; + + @Inject + RemovableDriveTaskFactoryImpl(@EventExecutor Executor eventExecutor) { + this.eventExecutor = eventExecutor; + } + + @Override + public RemovableDriveTask createReader(RemovableDriveTaskRegistry registry, + ContactId c, File f) { + return new RemovableDriverReaderTask(eventExecutor, registry, c, f); + } + + @Override + public RemovableDriveTask createWriter(RemovableDriveTaskRegistry registry, + ContactId c, File f) { + return new RemovableDriverWriterTask(eventExecutor, registry, c, f); + } +} diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveTaskImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveTaskImpl.java index 0af720b77..e5f09f971 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveTaskImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveTaskImpl.java @@ -14,7 +14,7 @@ import javax.annotation.concurrent.ThreadSafe; @ThreadSafe @NotNullByDefault -abstract class RemovableDriveTaskImpl implements RemovableDriveTask, Runnable { +abstract class RemovableDriveTaskImpl implements RemovableDriveTask { private final Executor eventExecutor; final RemovableDriveTaskRegistry registry;