mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-12 18:59:06 +01:00
Renamed VerificationExecutor, as it may be used for any crypto task.
This commit is contained in:
@@ -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 {}
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user