mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-13 03:09:04 +01:00
91 lines
3.1 KiB
Java
91 lines
3.1 KiB
Java
package net.sf.briar.protocol.duplex;
|
|
|
|
import java.util.concurrent.Executor;
|
|
|
|
import net.sf.briar.api.ContactId;
|
|
import net.sf.briar.api.db.DatabaseComponent;
|
|
import net.sf.briar.api.db.DatabaseExecutor;
|
|
import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
|
|
import net.sf.briar.api.protocol.ProtocolReaderFactory;
|
|
import net.sf.briar.api.protocol.ProtocolWriterFactory;
|
|
import net.sf.briar.api.protocol.TransportId;
|
|
import net.sf.briar.api.protocol.TransportIndex;
|
|
import net.sf.briar.api.protocol.VerificationExecutor;
|
|
import net.sf.briar.api.protocol.duplex.DuplexConnectionFactory;
|
|
import net.sf.briar.api.transport.ConnectionContext;
|
|
import net.sf.briar.api.transport.ConnectionReaderFactory;
|
|
import net.sf.briar.api.transport.ConnectionRegistry;
|
|
import net.sf.briar.api.transport.ConnectionWriterFactory;
|
|
|
|
import com.google.inject.Inject;
|
|
|
|
class StreamConnectionFactoryImpl implements DuplexConnectionFactory {
|
|
|
|
private final Executor dbExecutor, verificationExecutor;
|
|
private final DatabaseComponent db;
|
|
private final ConnectionRegistry connRegistry;
|
|
private final ConnectionReaderFactory connReaderFactory;
|
|
private final ConnectionWriterFactory connWriterFactory;
|
|
private final ProtocolReaderFactory protoReaderFactory;
|
|
private final ProtocolWriterFactory protoWriterFactory;
|
|
|
|
@Inject
|
|
StreamConnectionFactoryImpl(@DatabaseExecutor Executor dbExecutor,
|
|
@VerificationExecutor Executor verificationExecutor,
|
|
DatabaseComponent db, ConnectionRegistry connRegistry,
|
|
ConnectionReaderFactory connReaderFactory,
|
|
ConnectionWriterFactory connWriterFactory,
|
|
ProtocolReaderFactory protoReaderFactory,
|
|
ProtocolWriterFactory protoWriterFactory) {
|
|
this.dbExecutor = dbExecutor;
|
|
this.verificationExecutor = verificationExecutor;
|
|
this.db = db;
|
|
this.connRegistry = connRegistry;
|
|
this.connReaderFactory = connReaderFactory;
|
|
this.connWriterFactory = connWriterFactory;
|
|
this.protoReaderFactory = protoReaderFactory;
|
|
this.protoWriterFactory = protoWriterFactory;
|
|
}
|
|
|
|
public void createIncomingConnection(ConnectionContext ctx, TransportId t,
|
|
DuplexTransportConnection d, byte[] tag) {
|
|
final DuplexConnection conn = new IncomingDuplexConnection(dbExecutor,
|
|
verificationExecutor, db, connRegistry, connReaderFactory,
|
|
connWriterFactory, protoReaderFactory, protoWriterFactory,
|
|
ctx, t, d, tag);
|
|
Runnable write = new Runnable() {
|
|
public void run() {
|
|
conn.write();
|
|
}
|
|
};
|
|
new Thread(write).start();
|
|
Runnable read = new Runnable() {
|
|
public void run() {
|
|
conn.read();
|
|
}
|
|
};
|
|
new Thread(read).start();
|
|
}
|
|
|
|
public void createOutgoingConnection(ContactId c, TransportId t,
|
|
TransportIndex i, DuplexTransportConnection d) {
|
|
final DuplexConnection conn = new OutgoingDuplexConnection(dbExecutor,
|
|
verificationExecutor, db, connRegistry, connReaderFactory,
|
|
connWriterFactory, protoReaderFactory, protoWriterFactory,
|
|
c, t, i, d);
|
|
Runnable write = new Runnable() {
|
|
public void run() {
|
|
conn.write();
|
|
}
|
|
};
|
|
new Thread(write).start();
|
|
Runnable read = new Runnable() {
|
|
public void run() {
|
|
conn.read();
|
|
}
|
|
};
|
|
new Thread(read).start();
|
|
}
|
|
|
|
}
|