Merged ReliabilityExecutor into IoExecutor.

This commit is contained in:
akwizgran
2014-10-02 18:06:05 +01:00
parent 941efb4bbe
commit f9a6c46efe
3 changed files with 6 additions and 55 deletions

View File

@@ -1,17 +0,0 @@
package org.briarproject.api.reliability;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
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({ FIELD, METHOD, PARAMETER })
@Retention(RUNTIME)
public @interface ReliabilityExecutor {}

View File

@@ -4,7 +4,7 @@ import java.util.concurrent.Executor;
import javax.inject.Inject;
import org.briarproject.api.reliability.ReliabilityExecutor;
import org.briarproject.api.lifecycle.IoExecutor;
import org.briarproject.api.reliability.ReliabilityLayer;
import org.briarproject.api.reliability.ReliabilityLayerFactory;
import org.briarproject.api.reliability.WriteHandler;
@@ -13,16 +13,16 @@ import org.briarproject.system.SystemClock;
class ReliabilityLayerFactoryImpl implements ReliabilityLayerFactory {
private final Executor executor;
private final Executor ioExecutor;
private final Clock clock;
@Inject
ReliabilityLayerFactoryImpl(@ReliabilityExecutor Executor executor) {
this.executor = executor;
ReliabilityLayerFactoryImpl(@IoExecutor Executor ioExecutor) {
this.ioExecutor = ioExecutor;
clock = new SystemClock();
}
public ReliabilityLayer createReliabilityLayer(WriteHandler writeHandler) {
return new ReliabilityLayerImpl(executor, clock, writeHandler);
return new ReliabilityLayerImpl(ioExecutor, clock, writeHandler);
}
}

View File

@@ -1,46 +1,14 @@
package org.briarproject.reliability;
import static java.util.concurrent.TimeUnit.SECONDS;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.RejectedExecutionHandler;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.ThreadPoolExecutor;
import javax.inject.Singleton;
import org.briarproject.api.lifecycle.LifecycleManager;
import org.briarproject.api.reliability.ReliabilityExecutor;
import org.briarproject.api.reliability.ReliabilityLayerFactory;
import com.google.inject.AbstractModule;
import com.google.inject.Provides;
public class ReliabilityModule extends AbstractModule {
private final ExecutorService reliabilityExecutor;
public ReliabilityModule() {
// The thread pool is unbounded, so use direct handoff
BlockingQueue<Runnable> queue = new SynchronousQueue<Runnable>();
// Discard tasks that are submitted during shutdown
RejectedExecutionHandler policy =
new ThreadPoolExecutor.DiscardPolicy();
// Create threads as required and keep them in the pool for 60 seconds
reliabilityExecutor = new ThreadPoolExecutor(0, Integer.MAX_VALUE,
60, SECONDS, queue, policy);
}
@Override
protected void configure() {
bind(ReliabilityLayerFactory.class).to(
ReliabilityLayerFactoryImpl.class);
}
@Provides @Singleton @ReliabilityExecutor
Executor getReliabilityExecutor(LifecycleManager lifecycleManager) {
lifecycleManager.registerForShutdown(reliabilityExecutor);
return reliabilityExecutor;
}
}