From d3b742e14c543d9bbfe3f75b1029ad70612b22fb Mon Sep 17 00:00:00 2001
From: akwizgran <michael@briarproject.org>
Date: Tue, 12 Mar 2013 16:19:36 +0000
Subject: [PATCH] Renamed VerificationExecutor, as it may be used for any
 crypto task.

---
 .../CryptoExecutor.java}                      |  6 ++---
 .../src/net/sf/briar/crypto/CryptoModule.java | 23 ++++++++++++++++++
 .../sf/briar/messaging/MessagingModule.java   | 24 -------------------
 .../messaging/duplex/DuplexConnection.java    |  6 ++---
 .../duplex/DuplexConnectionFactoryImpl.java   |  4 ++--
 .../duplex/IncomingDuplexConnection.java      |  4 ++--
 .../duplex/OutgoingDuplexConnection.java      |  4 ++--
 .../simplex/IncomingSimplexConnection.java    |  4 ++--
 .../simplex/SimplexConnectionFactoryImpl.java |  4 ++--
 9 files changed, 39 insertions(+), 40 deletions(-)
 rename briar-api/src/net/sf/briar/api/{messaging/VerificationExecutor.java => crypto/CryptoExecutor.java} (66%)

diff --git a/briar-api/src/net/sf/briar/api/messaging/VerificationExecutor.java b/briar-api/src/net/sf/briar/api/crypto/CryptoExecutor.java
similarity index 66%
rename from briar-api/src/net/sf/briar/api/messaging/VerificationExecutor.java
rename to briar-api/src/net/sf/briar/api/crypto/CryptoExecutor.java
index 18e7da9661..346ed89387 100644
--- a/briar-api/src/net/sf/briar/api/messaging/VerificationExecutor.java
+++ b/briar-api/src/net/sf/briar/api/crypto/CryptoExecutor.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.messaging;
+package net.sf.briar.api.crypto;
 
 import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
@@ -8,8 +8,8 @@ import java.lang.annotation.Target;
 
 import com.google.inject.BindingAnnotation;
 
-/** Annotation for injecting the executor for message verification tasks. */
+/** Annotation for injecting the executor for long-running crypto tasks. */
 @BindingAnnotation
 @Target({ PARAMETER })
 @Retention(RUNTIME)
-public @interface VerificationExecutor {}
+public @interface CryptoExecutor {}
diff --git a/briar-core/src/net/sf/briar/crypto/CryptoModule.java b/briar-core/src/net/sf/briar/crypto/CryptoModule.java
index 517111b601..d006d07c8c 100644
--- a/briar-core/src/net/sf/briar/crypto/CryptoModule.java
+++ b/briar-core/src/net/sf/briar/crypto/CryptoModule.java
@@ -1,15 +1,38 @@
 package net.sf.briar.crypto;
 
+import java.util.concurrent.Executor;
+
 import net.sf.briar.api.crypto.CryptoComponent;
+import net.sf.briar.api.crypto.CryptoExecutor;
+import net.sf.briar.util.BoundedExecutor;
 
 import com.google.inject.AbstractModule;
 import com.google.inject.Singleton;
 
 public class CryptoModule extends AbstractModule {
 
+	// FIXME: Determine suitable values for these constants empirically
+
+	/**
+	 * The maximum number of tasks that can be queued for execution before
+	 * submitting another task will block.
+	 */
+	private static final int MAX_QUEUED_EXECUTOR_TASKS = 10;
+
+	/** The minimum number of executor threads to keep in the pool. */
+	private static final int MIN_EXECUTOR_THREADS = 1;
+
+	/** The maximum number of executor threads. */
+	private static final int MAX_EXECUTOR_THREADS =
+			Runtime.getRuntime().availableProcessors();
+
 	@Override
 	protected void configure() {
 		bind(CryptoComponent.class).to(
 				CryptoComponentImpl.class).in(Singleton.class);
+		// The executor is bounded, so tasks must be independent and short-lived
+		bind(Executor.class).annotatedWith(CryptoExecutor.class).toInstance(
+				new BoundedExecutor(MAX_QUEUED_EXECUTOR_TASKS,
+						MIN_EXECUTOR_THREADS, MAX_EXECUTOR_THREADS));
 	}
 }
diff --git a/briar-core/src/net/sf/briar/messaging/MessagingModule.java b/briar-core/src/net/sf/briar/messaging/MessagingModule.java
index 573a3f32b3..c98dd04675 100644
--- a/briar-core/src/net/sf/briar/messaging/MessagingModule.java
+++ b/briar-core/src/net/sf/briar/messaging/MessagingModule.java
@@ -1,7 +1,5 @@
 package net.sf.briar.messaging;
 
-import java.util.concurrent.Executor;
-
 import net.sf.briar.api.crypto.CryptoComponent;
 import net.sf.briar.api.messaging.Author;
 import net.sf.briar.api.messaging.AuthorFactory;
@@ -13,30 +11,13 @@ import net.sf.briar.api.messaging.PacketReaderFactory;
 import net.sf.briar.api.messaging.PacketWriterFactory;
 import net.sf.briar.api.messaging.SubscriptionUpdate;
 import net.sf.briar.api.messaging.UnverifiedMessage;
-import net.sf.briar.api.messaging.VerificationExecutor;
 import net.sf.briar.api.serial.StructReader;
-import net.sf.briar.util.BoundedExecutor;
 
 import com.google.inject.AbstractModule;
 import com.google.inject.Provides;
 
 public class MessagingModule extends AbstractModule {
 
-	// FIXME: Determine suitable values for these constants empirically
-
-	/**
-	 * The maximum number of verification tasks that can be queued for
-	 * execution before submitting another task will block.
-	 */
-	private static final int MAX_QUEUED_VERIFIER_TASKS = 10;
-
-	/** The minimum number of verification threads to keep in the pool. */
-	private static final int MIN_VERIFIER_THREADS = 1;
-
-	/** The maximum number of verification threads. */
-	private static final int MAX_VERIFIER_THREADS =
-			Runtime.getRuntime().availableProcessors();
-
 	@Override
 	protected void configure() {
 		bind(AuthorFactory.class).to(AuthorFactoryImpl.class);
@@ -45,11 +26,6 @@ public class MessagingModule extends AbstractModule {
 		bind(MessageVerifier.class).to(MessageVerifierImpl.class);
 		bind(PacketReaderFactory.class).to(PacketReaderFactoryImpl.class);
 		bind(PacketWriterFactory.class).to(PacketWriterFactoryImpl.class);
-		// The executor is bounded, so tasks must be independent and short-lived
-		bind(Executor.class).annotatedWith(
-				VerificationExecutor.class).toInstance(
-						new BoundedExecutor(MAX_QUEUED_VERIFIER_TASKS,
-								MIN_VERIFIER_THREADS, MAX_VERIFIER_THREADS));
 	}
 
 	@Provides
diff --git a/briar-core/src/net/sf/briar/messaging/duplex/DuplexConnection.java b/briar-core/src/net/sf/briar/messaging/duplex/DuplexConnection.java
index 310c4d304c..9b56a720bf 100644
--- a/briar-core/src/net/sf/briar/messaging/duplex/DuplexConnection.java
+++ b/briar-core/src/net/sf/briar/messaging/duplex/DuplexConnection.java
@@ -23,16 +23,17 @@ import java.util.logging.Logger;
 
 import net.sf.briar.api.ContactId;
 import net.sf.briar.api.FormatException;
+import net.sf.briar.api.crypto.CryptoExecutor;
 import net.sf.briar.api.db.DatabaseComponent;
 import net.sf.briar.api.db.DatabaseExecutor;
 import net.sf.briar.api.db.DbException;
 import net.sf.briar.api.db.event.ContactRemovedEvent;
 import net.sf.briar.api.db.event.DatabaseEvent;
 import net.sf.briar.api.db.event.DatabaseListener;
-import net.sf.briar.api.db.event.MessageExpiredEvent;
 import net.sf.briar.api.db.event.LocalSubscriptionsUpdatedEvent;
 import net.sf.briar.api.db.event.LocalTransportsUpdatedEvent;
 import net.sf.briar.api.db.event.MessageAddedEvent;
+import net.sf.briar.api.db.event.MessageExpiredEvent;
 import net.sf.briar.api.db.event.MessageReceivedEvent;
 import net.sf.briar.api.db.event.RatingChangedEvent;
 import net.sf.briar.api.db.event.RemoteRetentionTimeUpdatedEvent;
@@ -56,7 +57,6 @@ import net.sf.briar.api.messaging.TransportAck;
 import net.sf.briar.api.messaging.TransportId;
 import net.sf.briar.api.messaging.TransportUpdate;
 import net.sf.briar.api.messaging.UnverifiedMessage;
-import net.sf.briar.api.messaging.VerificationExecutor;
 import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
 import net.sf.briar.api.transport.ConnectionContext;
 import net.sf.briar.api.transport.ConnectionReader;
@@ -97,7 +97,7 @@ abstract class DuplexConnection implements DatabaseListener {
 	private volatile PacketWriter writer = null;
 
 	DuplexConnection(@DatabaseExecutor Executor dbExecutor,
-			@VerificationExecutor Executor verificationExecutor,
+			@CryptoExecutor Executor verificationExecutor,
 			MessageVerifier messageVerifier, DatabaseComponent db,
 			ConnectionRegistry connRegistry,
 			ConnectionReaderFactory connReaderFactory,
diff --git a/briar-core/src/net/sf/briar/messaging/duplex/DuplexConnectionFactoryImpl.java b/briar-core/src/net/sf/briar/messaging/duplex/DuplexConnectionFactoryImpl.java
index b23476890a..2c98cbf690 100644
--- a/briar-core/src/net/sf/briar/messaging/duplex/DuplexConnectionFactoryImpl.java
+++ b/briar-core/src/net/sf/briar/messaging/duplex/DuplexConnectionFactoryImpl.java
@@ -6,6 +6,7 @@ import java.util.concurrent.Executor;
 import java.util.logging.Logger;
 
 import net.sf.briar.api.ContactId;
+import net.sf.briar.api.crypto.CryptoExecutor;
 import net.sf.briar.api.crypto.KeyManager;
 import net.sf.briar.api.db.DatabaseComponent;
 import net.sf.briar.api.db.DatabaseExecutor;
@@ -13,7 +14,6 @@ import net.sf.briar.api.messaging.MessageVerifier;
 import net.sf.briar.api.messaging.PacketReaderFactory;
 import net.sf.briar.api.messaging.PacketWriterFactory;
 import net.sf.briar.api.messaging.TransportId;
-import net.sf.briar.api.messaging.VerificationExecutor;
 import net.sf.briar.api.messaging.duplex.DuplexConnectionFactory;
 import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
 import net.sf.briar.api.transport.ConnectionContext;
@@ -40,7 +40,7 @@ class DuplexConnectionFactoryImpl implements DuplexConnectionFactory {
 
 	@Inject
 	DuplexConnectionFactoryImpl(@DatabaseExecutor Executor dbExecutor,
-			@VerificationExecutor Executor verificationExecutor,
+			@CryptoExecutor Executor verificationExecutor,
 			MessageVerifier messageVerifier, DatabaseComponent db,
 			KeyManager keyManager, ConnectionRegistry connRegistry,
 			ConnectionReaderFactory connReaderFactory,
diff --git a/briar-core/src/net/sf/briar/messaging/duplex/IncomingDuplexConnection.java b/briar-core/src/net/sf/briar/messaging/duplex/IncomingDuplexConnection.java
index 64314943b3..08e955af9b 100644
--- a/briar-core/src/net/sf/briar/messaging/duplex/IncomingDuplexConnection.java
+++ b/briar-core/src/net/sf/briar/messaging/duplex/IncomingDuplexConnection.java
@@ -3,12 +3,12 @@ package net.sf.briar.messaging.duplex;
 import java.io.IOException;
 import java.util.concurrent.Executor;
 
+import net.sf.briar.api.crypto.CryptoExecutor;
 import net.sf.briar.api.db.DatabaseComponent;
 import net.sf.briar.api.db.DatabaseExecutor;
 import net.sf.briar.api.messaging.MessageVerifier;
 import net.sf.briar.api.messaging.PacketReaderFactory;
 import net.sf.briar.api.messaging.PacketWriterFactory;
-import net.sf.briar.api.messaging.VerificationExecutor;
 import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
 import net.sf.briar.api.transport.ConnectionContext;
 import net.sf.briar.api.transport.ConnectionReader;
@@ -20,7 +20,7 @@ import net.sf.briar.api.transport.ConnectionWriterFactory;
 class IncomingDuplexConnection extends DuplexConnection {
 
 	IncomingDuplexConnection(@DatabaseExecutor Executor dbExecutor,
-			@VerificationExecutor Executor verificationExecutor,
+			@CryptoExecutor Executor verificationExecutor,
 			MessageVerifier messageVerifier, DatabaseComponent db,
 			ConnectionRegistry connRegistry,
 			ConnectionReaderFactory connReaderFactory,
diff --git a/briar-core/src/net/sf/briar/messaging/duplex/OutgoingDuplexConnection.java b/briar-core/src/net/sf/briar/messaging/duplex/OutgoingDuplexConnection.java
index dd24410e6f..2a852a45c1 100644
--- a/briar-core/src/net/sf/briar/messaging/duplex/OutgoingDuplexConnection.java
+++ b/briar-core/src/net/sf/briar/messaging/duplex/OutgoingDuplexConnection.java
@@ -3,12 +3,12 @@ package net.sf.briar.messaging.duplex;
 import java.io.IOException;
 import java.util.concurrent.Executor;
 
+import net.sf.briar.api.crypto.CryptoExecutor;
 import net.sf.briar.api.db.DatabaseComponent;
 import net.sf.briar.api.db.DatabaseExecutor;
 import net.sf.briar.api.messaging.MessageVerifier;
 import net.sf.briar.api.messaging.PacketReaderFactory;
 import net.sf.briar.api.messaging.PacketWriterFactory;
-import net.sf.briar.api.messaging.VerificationExecutor;
 import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
 import net.sf.briar.api.transport.ConnectionContext;
 import net.sf.briar.api.transport.ConnectionReader;
@@ -20,7 +20,7 @@ import net.sf.briar.api.transport.ConnectionWriterFactory;
 class OutgoingDuplexConnection extends DuplexConnection {
 
 	OutgoingDuplexConnection(@DatabaseExecutor Executor dbExecutor,
-			@VerificationExecutor Executor verificationExecutor,
+			@CryptoExecutor Executor verificationExecutor,
 			MessageVerifier messageVerifier, DatabaseComponent db,
 			ConnectionRegistry connRegistry,
 			ConnectionReaderFactory connReaderFactory,
diff --git a/briar-core/src/net/sf/briar/messaging/simplex/IncomingSimplexConnection.java b/briar-core/src/net/sf/briar/messaging/simplex/IncomingSimplexConnection.java
index 9339616c36..bac3930cab 100644
--- a/briar-core/src/net/sf/briar/messaging/simplex/IncomingSimplexConnection.java
+++ b/briar-core/src/net/sf/briar/messaging/simplex/IncomingSimplexConnection.java
@@ -10,6 +10,7 @@ import java.util.logging.Logger;
 
 import net.sf.briar.api.ContactId;
 import net.sf.briar.api.FormatException;
+import net.sf.briar.api.crypto.CryptoExecutor;
 import net.sf.briar.api.db.DatabaseComponent;
 import net.sf.briar.api.db.DatabaseExecutor;
 import net.sf.briar.api.db.DbException;
@@ -26,7 +27,6 @@ import net.sf.briar.api.messaging.TransportAck;
 import net.sf.briar.api.messaging.TransportId;
 import net.sf.briar.api.messaging.TransportUpdate;
 import net.sf.briar.api.messaging.UnverifiedMessage;
-import net.sf.briar.api.messaging.VerificationExecutor;
 import net.sf.briar.api.plugins.simplex.SimplexTransportReader;
 import net.sf.briar.api.transport.ConnectionContext;
 import net.sf.briar.api.transport.ConnectionReader;
@@ -51,7 +51,7 @@ class IncomingSimplexConnection {
 	private final TransportId transportId;
 
 	IncomingSimplexConnection(@DatabaseExecutor Executor dbExecutor,
-			@VerificationExecutor Executor verificationExecutor,
+			@CryptoExecutor Executor verificationExecutor,
 			MessageVerifier messageVerifier, DatabaseComponent db,
 			ConnectionRegistry connRegistry,
 			ConnectionReaderFactory connReaderFactory,
diff --git a/briar-core/src/net/sf/briar/messaging/simplex/SimplexConnectionFactoryImpl.java b/briar-core/src/net/sf/briar/messaging/simplex/SimplexConnectionFactoryImpl.java
index 7a3f1c3372..5764c512b3 100644
--- a/briar-core/src/net/sf/briar/messaging/simplex/SimplexConnectionFactoryImpl.java
+++ b/briar-core/src/net/sf/briar/messaging/simplex/SimplexConnectionFactoryImpl.java
@@ -6,6 +6,7 @@ import java.util.concurrent.Executor;
 import java.util.logging.Logger;
 
 import net.sf.briar.api.ContactId;
+import net.sf.briar.api.crypto.CryptoExecutor;
 import net.sf.briar.api.crypto.KeyManager;
 import net.sf.briar.api.db.DatabaseComponent;
 import net.sf.briar.api.db.DatabaseExecutor;
@@ -13,7 +14,6 @@ import net.sf.briar.api.messaging.MessageVerifier;
 import net.sf.briar.api.messaging.PacketReaderFactory;
 import net.sf.briar.api.messaging.PacketWriterFactory;
 import net.sf.briar.api.messaging.TransportId;
-import net.sf.briar.api.messaging.VerificationExecutor;
 import net.sf.briar.api.messaging.simplex.SimplexConnectionFactory;
 import net.sf.briar.api.plugins.simplex.SimplexTransportReader;
 import net.sf.briar.api.plugins.simplex.SimplexTransportWriter;
@@ -41,7 +41,7 @@ class SimplexConnectionFactoryImpl implements SimplexConnectionFactory {
 
 	@Inject
 	SimplexConnectionFactoryImpl(@DatabaseExecutor Executor dbExecutor,
-			@VerificationExecutor Executor verificationExecutor,
+			@CryptoExecutor Executor verificationExecutor,
 			MessageVerifier messageVerifier, DatabaseComponent db,
 			KeyManager keyManager, ConnectionRegistry connRegistry,
 			ConnectionReaderFactory connReaderFactory,
-- 
GitLab