From e0f6948bc447965c3700fea27c6e0e8be36dcfc3 Mon Sep 17 00:00:00 2001 From: akwizgran <michael@briarproject.org> Date: Tue, 12 Feb 2013 14:18:43 +0000 Subject: [PATCH] Fixed injection problems with plugin and reliability modules. --- .../api/reliability/ReliabilityExecutor.java | 15 +++++++++++++++ .../src/net/sf/briar/plugins/PluginsModule.java | 5 ++--- .../reliability/ReliabilityLayerFactoryImpl.java | 6 +++++- .../sf/briar/reliability/ReliabilityModule.java | 8 ++++++++ 4 files changed, 30 insertions(+), 4 deletions(-) create mode 100644 briar-api/src/net/sf/briar/api/reliability/ReliabilityExecutor.java diff --git a/briar-api/src/net/sf/briar/api/reliability/ReliabilityExecutor.java b/briar-api/src/net/sf/briar/api/reliability/ReliabilityExecutor.java new file mode 100644 index 0000000000..a7ca755f3d --- /dev/null +++ b/briar-api/src/net/sf/briar/api/reliability/ReliabilityExecutor.java @@ -0,0 +1,15 @@ +package net.sf.briar.api.reliability; + +import static java.lang.annotation.ElementType.PARAMETER; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +import com.google.inject.BindingAnnotation; + +/** Annotation for injecting the executor used by reliability layers. */ +@BindingAnnotation +@Target({ PARAMETER }) +@Retention(RUNTIME) +public @interface ReliabilityExecutor {} \ No newline at end of file diff --git a/briar-core/src/net/sf/briar/plugins/PluginsModule.java b/briar-core/src/net/sf/briar/plugins/PluginsModule.java index 968fb2425f..d4c192d763 100644 --- a/briar-core/src/net/sf/briar/plugins/PluginsModule.java +++ b/briar-core/src/net/sf/briar/plugins/PluginsModule.java @@ -2,7 +2,6 @@ package net.sf.briar.plugins; import java.util.ArrayList; import java.util.Collection; -import java.util.concurrent.Executor; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -44,7 +43,7 @@ public class PluginsModule extends AbstractModule { @Provides SimplexPluginConfig getSimplexPluginConfig( - @PluginExecutor Executor pluginExecutor) { + @PluginExecutor ExecutorService pluginExecutor) { final Collection<SimplexPluginFactory> factories = new ArrayList<SimplexPluginFactory>(); if(!OsUtils.isAndroid()) { @@ -61,7 +60,7 @@ public class PluginsModule extends AbstractModule { @Provides DuplexPluginConfig getDuplexPluginConfig( - @PluginExecutor Executor pluginExecutor, + @PluginExecutor ExecutorService pluginExecutor, AndroidExecutor androidExecutor, Context appContext, ReliabilityLayerFactory reliabilityFactory, ShutdownManager shutdownManager) { diff --git a/briar-core/src/net/sf/briar/reliability/ReliabilityLayerFactoryImpl.java b/briar-core/src/net/sf/briar/reliability/ReliabilityLayerFactoryImpl.java index 25437bcffc..411f817b07 100644 --- a/briar-core/src/net/sf/briar/reliability/ReliabilityLayerFactoryImpl.java +++ b/briar-core/src/net/sf/briar/reliability/ReliabilityLayerFactoryImpl.java @@ -4,16 +4,20 @@ import java.util.concurrent.Executor; import net.sf.briar.api.clock.Clock; import net.sf.briar.api.clock.SystemClock; +import net.sf.briar.api.reliability.ReliabilityExecutor; import net.sf.briar.api.reliability.ReliabilityLayer; import net.sf.briar.api.reliability.ReliabilityLayerFactory; import net.sf.briar.api.reliability.WriteHandler; +import com.google.inject.Inject; + class ReliabilityLayerFactoryImpl implements ReliabilityLayerFactory { private final Executor executor; private final Clock clock; - ReliabilityLayerFactoryImpl(Executor executor) { + @Inject + ReliabilityLayerFactoryImpl(@ReliabilityExecutor Executor executor) { this.executor = executor; clock = new SystemClock(); } diff --git a/briar-core/src/net/sf/briar/reliability/ReliabilityModule.java b/briar-core/src/net/sf/briar/reliability/ReliabilityModule.java index 9f8e20034d..784d14360b 100644 --- a/briar-core/src/net/sf/briar/reliability/ReliabilityModule.java +++ b/briar-core/src/net/sf/briar/reliability/ReliabilityModule.java @@ -1,5 +1,9 @@ package net.sf.briar.reliability; +import java.util.concurrent.Executor; +import java.util.concurrent.Executors; + +import net.sf.briar.api.reliability.ReliabilityExecutor; import net.sf.briar.api.reliability.ReliabilityLayerFactory; import com.google.inject.AbstractModule; @@ -8,6 +12,10 @@ public class ReliabilityModule extends AbstractModule { @Override protected void configure() { + // The executor is unbounded - tasks are expected to be long-lived + bind(Executor.class).annotatedWith( + ReliabilityExecutor.class).toInstance( + Executors.newCachedThreadPool()); bind(ReliabilityLayerFactory.class).to( ReliabilityLayerFactoryImpl.class); } -- GitLab