mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-21 07:09:56 +01:00
Refactor connection creation back into manager.
This commit is contained in:
@@ -1,34 +0,0 @@
|
|||||||
package org.briarproject.bramble.connection;
|
|
||||||
|
|
||||||
import org.briarproject.bramble.api.connection.ConnectionManager;
|
|
||||||
import org.briarproject.bramble.api.contact.ContactId;
|
|
||||||
import org.briarproject.bramble.api.contact.PendingContactId;
|
|
||||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
|
||||||
import org.briarproject.bramble.api.plugin.TransportConnectionReader;
|
|
||||||
import org.briarproject.bramble.api.plugin.TransportConnectionWriter;
|
|
||||||
import org.briarproject.bramble.api.plugin.TransportId;
|
|
||||||
import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
|
|
||||||
|
|
||||||
@NotNullByDefault
|
|
||||||
interface ConnectionFactory {
|
|
||||||
|
|
||||||
Runnable createIncomingSimplexSyncConnection(TransportId t,
|
|
||||||
TransportConnectionReader r);
|
|
||||||
|
|
||||||
Runnable createIncomingDuplexSyncConnection(TransportId t,
|
|
||||||
DuplexTransportConnection d);
|
|
||||||
|
|
||||||
Runnable createIncomingHandshakeConnection(
|
|
||||||
ConnectionManager connectionManager, PendingContactId p,
|
|
||||||
TransportId t, DuplexTransportConnection d);
|
|
||||||
|
|
||||||
Runnable createOutgoingSimplexSyncConnection(ContactId c, TransportId t,
|
|
||||||
TransportConnectionWriter w);
|
|
||||||
|
|
||||||
Runnable createOutgoingDuplexSyncConnection(ContactId c, TransportId t,
|
|
||||||
DuplexTransportConnection d);
|
|
||||||
|
|
||||||
Runnable createOutgoingHandshakeConnection(
|
|
||||||
ConnectionManager connectionManager,
|
|
||||||
PendingContactId p, TransportId t, DuplexTransportConnection d);
|
|
||||||
}
|
|
||||||
@@ -1,109 +0,0 @@
|
|||||||
package org.briarproject.bramble.connection;
|
|
||||||
|
|
||||||
import org.briarproject.bramble.api.connection.ConnectionManager;
|
|
||||||
import org.briarproject.bramble.api.connection.ConnectionRegistry;
|
|
||||||
import org.briarproject.bramble.api.contact.ContactExchangeManager;
|
|
||||||
import org.briarproject.bramble.api.contact.ContactId;
|
|
||||||
import org.briarproject.bramble.api.contact.HandshakeManager;
|
|
||||||
import org.briarproject.bramble.api.contact.PendingContactId;
|
|
||||||
import org.briarproject.bramble.api.lifecycle.IoExecutor;
|
|
||||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
|
||||||
import org.briarproject.bramble.api.plugin.TransportConnectionReader;
|
|
||||||
import org.briarproject.bramble.api.plugin.TransportConnectionWriter;
|
|
||||||
import org.briarproject.bramble.api.plugin.TransportId;
|
|
||||||
import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
|
|
||||||
import org.briarproject.bramble.api.properties.TransportPropertyManager;
|
|
||||||
import org.briarproject.bramble.api.sync.SyncSessionFactory;
|
|
||||||
import org.briarproject.bramble.api.transport.KeyManager;
|
|
||||||
import org.briarproject.bramble.api.transport.StreamReaderFactory;
|
|
||||||
import org.briarproject.bramble.api.transport.StreamWriterFactory;
|
|
||||||
|
|
||||||
import java.util.concurrent.Executor;
|
|
||||||
|
|
||||||
import javax.annotation.concurrent.Immutable;
|
|
||||||
import javax.inject.Inject;
|
|
||||||
|
|
||||||
@Immutable
|
|
||||||
@NotNullByDefault
|
|
||||||
class ConnectionFactoryImpl implements ConnectionFactory {
|
|
||||||
|
|
||||||
private final Executor ioExecutor;
|
|
||||||
private final KeyManager keyManager;
|
|
||||||
private final StreamReaderFactory streamReaderFactory;
|
|
||||||
private final StreamWriterFactory streamWriterFactory;
|
|
||||||
private final SyncSessionFactory syncSessionFactory;
|
|
||||||
private final HandshakeManager handshakeManager;
|
|
||||||
private final ContactExchangeManager contactExchangeManager;
|
|
||||||
private final ConnectionRegistry connectionRegistry;
|
|
||||||
private final TransportPropertyManager transportPropertyManager;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
ConnectionFactoryImpl(@IoExecutor Executor ioExecutor,
|
|
||||||
KeyManager keyManager, StreamReaderFactory streamReaderFactory,
|
|
||||||
StreamWriterFactory streamWriterFactory,
|
|
||||||
SyncSessionFactory syncSessionFactory,
|
|
||||||
HandshakeManager handshakeManager,
|
|
||||||
ContactExchangeManager contactExchangeManager,
|
|
||||||
ConnectionRegistry connectionRegistry,
|
|
||||||
TransportPropertyManager transportPropertyManager) {
|
|
||||||
this.ioExecutor = ioExecutor;
|
|
||||||
this.keyManager = keyManager;
|
|
||||||
this.streamReaderFactory = streamReaderFactory;
|
|
||||||
this.streamWriterFactory = streamWriterFactory;
|
|
||||||
this.syncSessionFactory = syncSessionFactory;
|
|
||||||
this.handshakeManager = handshakeManager;
|
|
||||||
this.contactExchangeManager = contactExchangeManager;
|
|
||||||
this.connectionRegistry = connectionRegistry;
|
|
||||||
this.transportPropertyManager = transportPropertyManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Runnable createIncomingSimplexSyncConnection(TransportId t,
|
|
||||||
TransportConnectionReader r) {
|
|
||||||
return new IncomingSimplexSyncConnection(keyManager,
|
|
||||||
connectionRegistry, streamReaderFactory, streamWriterFactory,
|
|
||||||
syncSessionFactory, transportPropertyManager, t, r);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Runnable createIncomingDuplexSyncConnection(TransportId t,
|
|
||||||
DuplexTransportConnection d) {
|
|
||||||
return new IncomingDuplexSyncConnection(keyManager, connectionRegistry,
|
|
||||||
streamReaderFactory, streamWriterFactory, syncSessionFactory,
|
|
||||||
transportPropertyManager, ioExecutor, t, d);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Runnable createIncomingHandshakeConnection(
|
|
||||||
ConnectionManager connectionManager, PendingContactId p,
|
|
||||||
TransportId t, DuplexTransportConnection d) {
|
|
||||||
return new IncomingHandshakeConnection(keyManager, connectionRegistry,
|
|
||||||
streamReaderFactory, streamWriterFactory, handshakeManager,
|
|
||||||
contactExchangeManager, connectionManager, p, t, d);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Runnable createOutgoingSimplexSyncConnection(ContactId c,
|
|
||||||
TransportId t, TransportConnectionWriter w) {
|
|
||||||
return new OutgoingSimplexSyncConnection(keyManager,
|
|
||||||
connectionRegistry, streamReaderFactory, streamWriterFactory,
|
|
||||||
syncSessionFactory, transportPropertyManager, c, t, w);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Runnable createOutgoingDuplexSyncConnection(ContactId c,
|
|
||||||
TransportId t, DuplexTransportConnection d) {
|
|
||||||
return new OutgoingDuplexSyncConnection(keyManager, connectionRegistry,
|
|
||||||
streamReaderFactory, streamWriterFactory, syncSessionFactory,
|
|
||||||
transportPropertyManager, ioExecutor, c, t, d);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Runnable createOutgoingHandshakeConnection(
|
|
||||||
ConnectionManager connectionManager, PendingContactId p,
|
|
||||||
TransportId t, DuplexTransportConnection d) {
|
|
||||||
return new OutgoingHandshakeConnection(keyManager, connectionRegistry,
|
|
||||||
streamReaderFactory, streamWriterFactory, handshakeManager,
|
|
||||||
contactExchangeManager, connectionManager, p, t, d);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,7 +1,10 @@
|
|||||||
package org.briarproject.bramble.connection;
|
package org.briarproject.bramble.connection;
|
||||||
|
|
||||||
import org.briarproject.bramble.api.connection.ConnectionManager;
|
import org.briarproject.bramble.api.connection.ConnectionManager;
|
||||||
|
import org.briarproject.bramble.api.connection.ConnectionRegistry;
|
||||||
|
import org.briarproject.bramble.api.contact.ContactExchangeManager;
|
||||||
import org.briarproject.bramble.api.contact.ContactId;
|
import org.briarproject.bramble.api.contact.ContactId;
|
||||||
|
import org.briarproject.bramble.api.contact.HandshakeManager;
|
||||||
import org.briarproject.bramble.api.contact.PendingContactId;
|
import org.briarproject.bramble.api.contact.PendingContactId;
|
||||||
import org.briarproject.bramble.api.lifecycle.IoExecutor;
|
import org.briarproject.bramble.api.lifecycle.IoExecutor;
|
||||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||||
@@ -9,63 +12,99 @@ import org.briarproject.bramble.api.plugin.TransportConnectionReader;
|
|||||||
import org.briarproject.bramble.api.plugin.TransportConnectionWriter;
|
import org.briarproject.bramble.api.plugin.TransportConnectionWriter;
|
||||||
import org.briarproject.bramble.api.plugin.TransportId;
|
import org.briarproject.bramble.api.plugin.TransportId;
|
||||||
import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
|
import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
|
||||||
|
import org.briarproject.bramble.api.properties.TransportPropertyManager;
|
||||||
|
import org.briarproject.bramble.api.sync.SyncSessionFactory;
|
||||||
|
import org.briarproject.bramble.api.transport.KeyManager;
|
||||||
|
import org.briarproject.bramble.api.transport.StreamReaderFactory;
|
||||||
|
import org.briarproject.bramble.api.transport.StreamWriterFactory;
|
||||||
|
|
||||||
import java.util.concurrent.Executor;
|
import java.util.concurrent.Executor;
|
||||||
|
|
||||||
|
import javax.annotation.concurrent.Immutable;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
@Immutable
|
||||||
@NotNullByDefault
|
@NotNullByDefault
|
||||||
class ConnectionManagerImpl implements ConnectionManager {
|
class ConnectionManagerImpl implements ConnectionManager {
|
||||||
|
|
||||||
private final Executor ioExecutor;
|
private final Executor ioExecutor;
|
||||||
private final ConnectionFactory connectionFactory;
|
private final KeyManager keyManager;
|
||||||
|
private final StreamReaderFactory streamReaderFactory;
|
||||||
|
private final StreamWriterFactory streamWriterFactory;
|
||||||
|
private final SyncSessionFactory syncSessionFactory;
|
||||||
|
private final HandshakeManager handshakeManager;
|
||||||
|
private final ContactExchangeManager contactExchangeManager;
|
||||||
|
private final ConnectionRegistry connectionRegistry;
|
||||||
|
private final TransportPropertyManager transportPropertyManager;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
ConnectionManagerImpl(@IoExecutor Executor ioExecutor,
|
ConnectionManagerImpl(@IoExecutor Executor ioExecutor,
|
||||||
ConnectionFactory connectionFactory) {
|
KeyManager keyManager, StreamReaderFactory streamReaderFactory,
|
||||||
|
StreamWriterFactory streamWriterFactory,
|
||||||
|
SyncSessionFactory syncSessionFactory,
|
||||||
|
HandshakeManager handshakeManager,
|
||||||
|
ContactExchangeManager contactExchangeManager,
|
||||||
|
ConnectionRegistry connectionRegistry,
|
||||||
|
TransportPropertyManager transportPropertyManager) {
|
||||||
this.ioExecutor = ioExecutor;
|
this.ioExecutor = ioExecutor;
|
||||||
this.connectionFactory = connectionFactory;
|
this.keyManager = keyManager;
|
||||||
|
this.streamReaderFactory = streamReaderFactory;
|
||||||
|
this.streamWriterFactory = streamWriterFactory;
|
||||||
|
this.syncSessionFactory = syncSessionFactory;
|
||||||
|
this.handshakeManager = handshakeManager;
|
||||||
|
this.contactExchangeManager = contactExchangeManager;
|
||||||
|
this.connectionRegistry = connectionRegistry;
|
||||||
|
this.transportPropertyManager = transportPropertyManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void manageIncomingConnection(TransportId t,
|
public void manageIncomingConnection(TransportId t,
|
||||||
TransportConnectionReader r) {
|
TransportConnectionReader r) {
|
||||||
ioExecutor.execute(
|
ioExecutor.execute(new IncomingSimplexSyncConnection(keyManager,
|
||||||
connectionFactory.createIncomingSimplexSyncConnection(t, r));
|
connectionRegistry, streamReaderFactory, streamWriterFactory,
|
||||||
|
syncSessionFactory, transportPropertyManager, t, r));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void manageIncomingConnection(TransportId t,
|
public void manageIncomingConnection(TransportId t,
|
||||||
DuplexTransportConnection d) {
|
DuplexTransportConnection d) {
|
||||||
ioExecutor.execute(
|
ioExecutor.execute(new IncomingDuplexSyncConnection(keyManager,
|
||||||
connectionFactory.createIncomingDuplexSyncConnection(t, d));
|
connectionRegistry, streamReaderFactory, streamWriterFactory,
|
||||||
|
syncSessionFactory, transportPropertyManager, ioExecutor,
|
||||||
|
t, d));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void manageIncomingConnection(PendingContactId p, TransportId t,
|
public void manageIncomingConnection(PendingContactId p, TransportId t,
|
||||||
DuplexTransportConnection d) {
|
DuplexTransportConnection d) {
|
||||||
ioExecutor.execute(connectionFactory
|
ioExecutor.execute(new IncomingHandshakeConnection(keyManager,
|
||||||
.createIncomingHandshakeConnection(this, p, t, d));
|
connectionRegistry, streamReaderFactory, streamWriterFactory,
|
||||||
|
handshakeManager, contactExchangeManager, this, p, t, d));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void manageOutgoingConnection(ContactId c, TransportId t,
|
public void manageOutgoingConnection(ContactId c, TransportId t,
|
||||||
TransportConnectionWriter w) {
|
TransportConnectionWriter w) {
|
||||||
ioExecutor.execute(
|
ioExecutor.execute(new OutgoingSimplexSyncConnection(keyManager,
|
||||||
connectionFactory.createOutgoingSimplexSyncConnection(c, t, w));
|
connectionRegistry, streamReaderFactory, streamWriterFactory,
|
||||||
|
syncSessionFactory, transportPropertyManager, c, t, w));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void manageOutgoingConnection(ContactId c, TransportId t,
|
public void manageOutgoingConnection(ContactId c, TransportId t,
|
||||||
DuplexTransportConnection d) {
|
DuplexTransportConnection d) {
|
||||||
ioExecutor.execute(
|
ioExecutor.execute(new OutgoingDuplexSyncConnection(keyManager,
|
||||||
connectionFactory.createOutgoingDuplexSyncConnection(c, t, d));
|
connectionRegistry, streamReaderFactory, streamWriterFactory,
|
||||||
|
syncSessionFactory, transportPropertyManager, ioExecutor,
|
||||||
|
c, t, d));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void manageOutgoingConnection(PendingContactId p, TransportId t,
|
public void manageOutgoingConnection(PendingContactId p, TransportId t,
|
||||||
DuplexTransportConnection d) {
|
DuplexTransportConnection d) {
|
||||||
ioExecutor.execute(connectionFactory
|
ioExecutor.execute(new OutgoingHandshakeConnection(keyManager,
|
||||||
.createOutgoingHandshakeConnection(this, p, t, d));
|
connectionRegistry, streamReaderFactory, streamWriterFactory,
|
||||||
|
handshakeManager, contactExchangeManager, this, p, t, d));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,18 +12,11 @@ import dagger.Provides;
|
|||||||
public class ConnectionModule {
|
public class ConnectionModule {
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
@Singleton
|
|
||||||
ConnectionManager provideConnectionManager(
|
ConnectionManager provideConnectionManager(
|
||||||
ConnectionManagerImpl connectionManager) {
|
ConnectionManagerImpl connectionManager) {
|
||||||
return connectionManager;
|
return connectionManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Provides
|
|
||||||
ConnectionFactory provideConnectionFactory(
|
|
||||||
ConnectionFactoryImpl connectionFactory) {
|
|
||||||
return connectionFactory;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
@Singleton
|
@Singleton
|
||||||
ConnectionRegistry provideConnectionRegistry(
|
ConnectionRegistry provideConnectionRegistry(
|
||||||
|
|||||||
Reference in New Issue
Block a user