mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-13 11:19:04 +01:00
56 lines
2.0 KiB
Java
56 lines
2.0 KiB
Java
package net.sf.briar.transport.stream;
|
|
|
|
import java.io.IOException;
|
|
|
|
import net.sf.briar.api.ContactId;
|
|
import net.sf.briar.api.TransportId;
|
|
import net.sf.briar.api.db.DatabaseComponent;
|
|
import net.sf.briar.api.db.DbException;
|
|
import net.sf.briar.api.protocol.ProtocolReaderFactory;
|
|
import net.sf.briar.api.protocol.writers.ProtocolWriterFactory;
|
|
import net.sf.briar.api.transport.ConnectionReader;
|
|
import net.sf.briar.api.transport.ConnectionReaderFactory;
|
|
import net.sf.briar.api.transport.ConnectionWriter;
|
|
import net.sf.briar.api.transport.ConnectionWriterFactory;
|
|
import net.sf.briar.api.transport.StreamTransportConnection;
|
|
|
|
public class OutgoingStreamConnection extends StreamConnection {
|
|
|
|
private long connectionNum = -1L; // Locking: this
|
|
|
|
OutgoingStreamConnection(ConnectionReaderFactory connReaderFactory,
|
|
ConnectionWriterFactory connWriterFactory, DatabaseComponent db,
|
|
ProtocolReaderFactory protoReaderFactory,
|
|
ProtocolWriterFactory protoWriterFactory, TransportId transportId,
|
|
ContactId contactId, StreamTransportConnection connection) {
|
|
super(connReaderFactory, connWriterFactory, db, protoReaderFactory,
|
|
protoWriterFactory, transportId, contactId, connection);
|
|
}
|
|
|
|
@Override
|
|
protected ConnectionReader createConnectionReader() throws DbException,
|
|
IOException {
|
|
synchronized(this) {
|
|
if(connectionNum == -1L)
|
|
connectionNum = db.getConnectionNumber(contactId, transportId);
|
|
}
|
|
byte[] secret = db.getSharedSecret(contactId);
|
|
return connReaderFactory.createConnectionReader(
|
|
connection.getInputStream(), false, transportId, connectionNum,
|
|
secret);
|
|
}
|
|
|
|
@Override
|
|
protected ConnectionWriter createConnectionWriter() throws DbException,
|
|
IOException {
|
|
synchronized(this) {
|
|
if(connectionNum == -1L)
|
|
connectionNum = db.getConnectionNumber(contactId, transportId);
|
|
}
|
|
byte[] secret = db.getSharedSecret(contactId);
|
|
return connWriterFactory.createConnectionWriter(
|
|
connection.getOutputStream(), Long.MAX_VALUE, true, transportId,
|
|
connectionNum, secret);
|
|
}
|
|
}
|