mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-18 13:49:53 +01:00
Merged ReliabilityExecutor into IoExecutor.
This commit is contained in:
@@ -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 {}
|
|
||||||
@@ -4,7 +4,7 @@ import java.util.concurrent.Executor;
|
|||||||
|
|
||||||
import javax.inject.Inject;
|
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.ReliabilityLayer;
|
||||||
import org.briarproject.api.reliability.ReliabilityLayerFactory;
|
import org.briarproject.api.reliability.ReliabilityLayerFactory;
|
||||||
import org.briarproject.api.reliability.WriteHandler;
|
import org.briarproject.api.reliability.WriteHandler;
|
||||||
@@ -13,16 +13,16 @@ import org.briarproject.system.SystemClock;
|
|||||||
|
|
||||||
class ReliabilityLayerFactoryImpl implements ReliabilityLayerFactory {
|
class ReliabilityLayerFactoryImpl implements ReliabilityLayerFactory {
|
||||||
|
|
||||||
private final Executor executor;
|
private final Executor ioExecutor;
|
||||||
private final Clock clock;
|
private final Clock clock;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
ReliabilityLayerFactoryImpl(@ReliabilityExecutor Executor executor) {
|
ReliabilityLayerFactoryImpl(@IoExecutor Executor ioExecutor) {
|
||||||
this.executor = executor;
|
this.ioExecutor = ioExecutor;
|
||||||
clock = new SystemClock();
|
clock = new SystemClock();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ReliabilityLayer createReliabilityLayer(WriteHandler writeHandler) {
|
public ReliabilityLayer createReliabilityLayer(WriteHandler writeHandler) {
|
||||||
return new ReliabilityLayerImpl(executor, clock, writeHandler);
|
return new ReliabilityLayerImpl(ioExecutor, clock, writeHandler);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,46 +1,14 @@
|
|||||||
package org.briarproject.reliability;
|
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 org.briarproject.api.reliability.ReliabilityLayerFactory;
|
||||||
|
|
||||||
import com.google.inject.AbstractModule;
|
import com.google.inject.AbstractModule;
|
||||||
import com.google.inject.Provides;
|
|
||||||
|
|
||||||
public class ReliabilityModule extends AbstractModule {
|
public class ReliabilityModule extends AbstractModule {
|
||||||
|
|
||||||
private final ExecutorService reliabilityExecutor;
|
@Override
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void configure() {
|
protected void configure() {
|
||||||
bind(ReliabilityLayerFactory.class).to(
|
bind(ReliabilityLayerFactory.class).to(
|
||||||
ReliabilityLayerFactoryImpl.class);
|
ReliabilityLayerFactoryImpl.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Provides @Singleton @ReliabilityExecutor
|
|
||||||
Executor getReliabilityExecutor(LifecycleManager lifecycleManager) {
|
|
||||||
lifecycleManager.registerForShutdown(reliabilityExecutor);
|
|
||||||
return reliabilityExecutor;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user