mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-16 12:49:55 +01:00
Minor refactoring.
This commit is contained in:
@@ -58,8 +58,8 @@ import net.sf.briar.api.protocol.writers.AckWriter;
|
||||
import net.sf.briar.api.protocol.writers.BatchWriter;
|
||||
import net.sf.briar.api.protocol.writers.OfferWriter;
|
||||
import net.sf.briar.api.protocol.writers.RequestWriter;
|
||||
import net.sf.briar.api.protocol.writers.SubscriptionWriter;
|
||||
import net.sf.briar.api.protocol.writers.TransportWriter;
|
||||
import net.sf.briar.api.protocol.writers.SubscriptionUpdateWriter;
|
||||
import net.sf.briar.api.protocol.writers.TransportUpdateWriter;
|
||||
import net.sf.briar.api.transport.ConnectionWindow;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
@@ -602,8 +602,8 @@ DatabaseCleaner.Callback {
|
||||
return sent;
|
||||
}
|
||||
|
||||
public void generateSubscriptionUpdate(ContactId c, SubscriptionWriter s)
|
||||
throws DbException, IOException {
|
||||
public void generateSubscriptionUpdate(ContactId c,
|
||||
SubscriptionUpdateWriter s) throws DbException, IOException {
|
||||
Map<Group, Long> subs = null;
|
||||
long timestamp = 0L;
|
||||
contactLock.readLock().lock();
|
||||
@@ -644,7 +644,7 @@ DatabaseCleaner.Callback {
|
||||
return now - sent >= DatabaseConstants.MAX_UPDATE_INTERVAL;
|
||||
}
|
||||
|
||||
public void generateTransportUpdate(ContactId c, TransportWriter t)
|
||||
public void generateTransportUpdate(ContactId c, TransportUpdateWriter t)
|
||||
throws DbException, IOException {
|
||||
Collection<Transport> transports = null;
|
||||
long timestamp = 0L;
|
||||
|
||||
@@ -14,12 +14,10 @@ import net.sf.briar.api.protocol.AuthorId;
|
||||
import net.sf.briar.api.protocol.Group;
|
||||
import net.sf.briar.api.protocol.GroupId;
|
||||
import net.sf.briar.api.protocol.Message;
|
||||
import net.sf.briar.api.protocol.MessageEncoder;
|
||||
import net.sf.briar.api.protocol.MessageId;
|
||||
import net.sf.briar.api.protocol.ProtocolConstants;
|
||||
import net.sf.briar.api.protocol.Types;
|
||||
import net.sf.briar.api.protocol.writers.AuthorWriter;
|
||||
import net.sf.briar.api.protocol.writers.GroupWriter;
|
||||
import net.sf.briar.api.protocol.writers.MessageEncoder;
|
||||
import net.sf.briar.api.serial.Consumer;
|
||||
import net.sf.briar.api.serial.Writer;
|
||||
import net.sf.briar.api.serial.WriterFactory;
|
||||
@@ -32,19 +30,14 @@ class MessageEncoderImpl implements MessageEncoder {
|
||||
private final SecureRandom random;
|
||||
private final MessageDigest messageDigest;
|
||||
private final WriterFactory writerFactory;
|
||||
private final AuthorWriter authorWriter;
|
||||
private final GroupWriter groupWriter;
|
||||
|
||||
@Inject
|
||||
MessageEncoderImpl(CryptoComponent crypto, WriterFactory writerFactory,
|
||||
AuthorWriter authorWriter, GroupWriter groupWriter) {
|
||||
MessageEncoderImpl(CryptoComponent crypto, WriterFactory writerFactory) {
|
||||
authorSignature = crypto.getSignature();
|
||||
groupSignature = crypto.getSignature();
|
||||
random = crypto.getSecureRandom();
|
||||
messageDigest = crypto.getMessageDigest();
|
||||
this.writerFactory = writerFactory;
|
||||
this.authorWriter = authorWriter;
|
||||
this.groupWriter = groupWriter;
|
||||
}
|
||||
|
||||
public Message encodeMessage(MessageId parent, String subject, byte[] body)
|
||||
@@ -111,9 +104,9 @@ class MessageEncoderImpl implements MessageEncoder {
|
||||
if(parent == null) w.writeNull();
|
||||
else w.writeBytes(parent.getBytes());
|
||||
if(group == null) w.writeNull();
|
||||
else groupWriter.writeGroup(w, group);
|
||||
else writeGroup(w, group);
|
||||
if(author == null) w.writeNull();
|
||||
else authorWriter.writeAuthor(w, author);
|
||||
else writeAuthor(w, author);
|
||||
w.writeString(subject);
|
||||
long timestamp = System.currentTimeMillis();
|
||||
w.writeInt64(timestamp);
|
||||
@@ -151,4 +144,18 @@ class MessageEncoderImpl implements MessageEncoder {
|
||||
return new MessageImpl(id, parent, groupId, authorId, subject,
|
||||
timestamp, raw, bodyStart, body.length);
|
||||
}
|
||||
|
||||
private void writeGroup(Writer w, Group g) throws IOException {
|
||||
w.writeUserDefinedId(Types.GROUP);
|
||||
w.writeString(g.getName());
|
||||
byte[] publicKey = g.getPublicKey();
|
||||
if(publicKey == null) w.writeNull();
|
||||
else w.writeBytes(publicKey);
|
||||
}
|
||||
|
||||
private void writeAuthor(Writer w, Author a) throws IOException {
|
||||
w.writeUserDefinedId(Types.AUTHOR);
|
||||
w.writeString(a.getName());
|
||||
w.writeBytes(a.getPublicKey());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,13 +9,13 @@ import net.sf.briar.api.protocol.BatchId;
|
||||
import net.sf.briar.api.protocol.Group;
|
||||
import net.sf.briar.api.protocol.GroupFactory;
|
||||
import net.sf.briar.api.protocol.Message;
|
||||
import net.sf.briar.api.protocol.MessageEncoder;
|
||||
import net.sf.briar.api.protocol.MessageId;
|
||||
import net.sf.briar.api.protocol.Offer;
|
||||
import net.sf.briar.api.protocol.ProtocolReaderFactory;
|
||||
import net.sf.briar.api.protocol.Request;
|
||||
import net.sf.briar.api.protocol.SubscriptionUpdate;
|
||||
import net.sf.briar.api.protocol.TransportUpdate;
|
||||
import net.sf.briar.api.protocol.writers.MessageEncoder;
|
||||
import net.sf.briar.api.serial.ObjectReader;
|
||||
|
||||
import com.google.inject.AbstractModule;
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
package net.sf.briar.protocol.writers;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import net.sf.briar.api.protocol.Author;
|
||||
import net.sf.briar.api.protocol.Types;
|
||||
import net.sf.briar.api.protocol.writers.AuthorWriter;
|
||||
import net.sf.briar.api.serial.Writer;
|
||||
|
||||
class AuthorWriterImpl implements AuthorWriter {
|
||||
|
||||
public void writeAuthor(Writer w, Author a) throws IOException {
|
||||
w.writeUserDefinedId(Types.AUTHOR);
|
||||
w.writeString(a.getName());
|
||||
w.writeBytes(a.getPublicKey());
|
||||
}
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
package net.sf.briar.protocol.writers;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import net.sf.briar.api.protocol.Group;
|
||||
import net.sf.briar.api.protocol.Types;
|
||||
import net.sf.briar.api.protocol.writers.GroupWriter;
|
||||
import net.sf.briar.api.serial.Writer;
|
||||
|
||||
class GroupWriterImpl implements GroupWriter {
|
||||
|
||||
public void writeGroup(Writer w, Group g) throws IOException {
|
||||
w.writeUserDefinedId(Types.GROUP);
|
||||
w.writeString(g.getName());
|
||||
byte[] publicKey = g.getPublicKey();
|
||||
if(publicKey == null) w.writeNull();
|
||||
else w.writeBytes(publicKey);
|
||||
}
|
||||
}
|
||||
@@ -9,8 +9,8 @@ import net.sf.briar.api.protocol.writers.BatchWriter;
|
||||
import net.sf.briar.api.protocol.writers.OfferWriter;
|
||||
import net.sf.briar.api.protocol.writers.ProtocolWriterFactory;
|
||||
import net.sf.briar.api.protocol.writers.RequestWriter;
|
||||
import net.sf.briar.api.protocol.writers.SubscriptionWriter;
|
||||
import net.sf.briar.api.protocol.writers.TransportWriter;
|
||||
import net.sf.briar.api.protocol.writers.SubscriptionUpdateWriter;
|
||||
import net.sf.briar.api.protocol.writers.TransportUpdateWriter;
|
||||
import net.sf.briar.api.serial.SerialComponent;
|
||||
import net.sf.briar.api.serial.WriterFactory;
|
||||
|
||||
@@ -46,11 +46,12 @@ class ProtocolWriterFactoryImpl implements ProtocolWriterFactory {
|
||||
return new RequestWriterImpl(out, writerFactory);
|
||||
}
|
||||
|
||||
public SubscriptionWriter createSubscriptionWriter(OutputStream out) {
|
||||
return new SubscriptionWriterImpl(out, writerFactory);
|
||||
public SubscriptionUpdateWriter createSubscriptionUpdateWriter(
|
||||
OutputStream out) {
|
||||
return new SubscriptionUpdateWriterImpl(out, writerFactory);
|
||||
}
|
||||
|
||||
public TransportWriter createTransportWriter(OutputStream out) {
|
||||
return new TransportWriterImpl(out, writerFactory);
|
||||
public TransportUpdateWriter createTransportUpdateWriter(OutputStream out) {
|
||||
return new TransportUpdateWriterImpl(out, writerFactory);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
package net.sf.briar.protocol.writers;
|
||||
|
||||
import net.sf.briar.api.protocol.writers.AuthorWriter;
|
||||
import net.sf.briar.api.protocol.writers.GroupWriter;
|
||||
import net.sf.briar.api.protocol.writers.ProtocolWriterFactory;
|
||||
|
||||
import com.google.inject.AbstractModule;
|
||||
@@ -10,8 +8,6 @@ public class ProtocolWritersModule extends AbstractModule {
|
||||
|
||||
@Override
|
||||
protected void configure() {
|
||||
bind(AuthorWriter.class).to(AuthorWriterImpl.class);
|
||||
bind(GroupWriter.class).to(GroupWriterImpl.class);
|
||||
bind(ProtocolWriterFactory.class).to(ProtocolWriterFactoryImpl.class);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,21 +7,19 @@ import java.util.Map.Entry;
|
||||
|
||||
import net.sf.briar.api.protocol.Group;
|
||||
import net.sf.briar.api.protocol.Types;
|
||||
import net.sf.briar.api.protocol.writers.GroupWriter;
|
||||
import net.sf.briar.api.protocol.writers.SubscriptionWriter;
|
||||
import net.sf.briar.api.protocol.writers.SubscriptionUpdateWriter;
|
||||
import net.sf.briar.api.serial.Writer;
|
||||
import net.sf.briar.api.serial.WriterFactory;
|
||||
|
||||
class SubscriptionWriterImpl implements SubscriptionWriter {
|
||||
class SubscriptionUpdateWriterImpl implements SubscriptionUpdateWriter {
|
||||
|
||||
private final OutputStream out;
|
||||
private final Writer w;
|
||||
private final GroupWriter groupWriter;
|
||||
|
||||
SubscriptionWriterImpl(OutputStream out, WriterFactory writerFactory) {
|
||||
SubscriptionUpdateWriterImpl(OutputStream out,
|
||||
WriterFactory writerFactory) {
|
||||
this.out = out;
|
||||
w = writerFactory.createWriter(out);
|
||||
groupWriter = new GroupWriterImpl();
|
||||
}
|
||||
|
||||
public void writeSubscriptions(Map<Group, Long> subs, long timestamp)
|
||||
@@ -29,11 +27,19 @@ class SubscriptionWriterImpl implements SubscriptionWriter {
|
||||
w.writeUserDefinedId(Types.SUBSCRIPTION_UPDATE);
|
||||
w.writeMapStart();
|
||||
for(Entry<Group, Long> e : subs.entrySet()) {
|
||||
groupWriter.writeGroup(w, e.getKey());
|
||||
writeGroup(w, e.getKey());
|
||||
w.writeInt64(e.getValue());
|
||||
}
|
||||
w.writeMapEnd();
|
||||
w.writeInt64(timestamp);
|
||||
out.flush();
|
||||
}
|
||||
|
||||
private void writeGroup(Writer w, Group g) throws IOException {
|
||||
w.writeUserDefinedId(Types.GROUP);
|
||||
w.writeString(g.getName());
|
||||
byte[] publicKey = g.getPublicKey();
|
||||
if(publicKey == null) w.writeNull();
|
||||
else w.writeBytes(publicKey);
|
||||
}
|
||||
}
|
||||
@@ -6,16 +6,16 @@ import java.util.Collection;
|
||||
|
||||
import net.sf.briar.api.protocol.Transport;
|
||||
import net.sf.briar.api.protocol.Types;
|
||||
import net.sf.briar.api.protocol.writers.TransportWriter;
|
||||
import net.sf.briar.api.protocol.writers.TransportUpdateWriter;
|
||||
import net.sf.briar.api.serial.Writer;
|
||||
import net.sf.briar.api.serial.WriterFactory;
|
||||
|
||||
class TransportWriterImpl implements TransportWriter {
|
||||
class TransportUpdateWriterImpl implements TransportUpdateWriter {
|
||||
|
||||
private final OutputStream out;
|
||||
private final Writer w;
|
||||
|
||||
TransportWriterImpl(OutputStream out, WriterFactory writerFactory) {
|
||||
TransportUpdateWriterImpl(OutputStream out, WriterFactory writerFactory) {
|
||||
this.out = out;
|
||||
w = writerFactory.createWriter(out);
|
||||
}
|
||||
@@ -14,8 +14,8 @@ import net.sf.briar.api.protocol.TransportIndex;
|
||||
import net.sf.briar.api.protocol.writers.AckWriter;
|
||||
import net.sf.briar.api.protocol.writers.BatchWriter;
|
||||
import net.sf.briar.api.protocol.writers.ProtocolWriterFactory;
|
||||
import net.sf.briar.api.protocol.writers.SubscriptionWriter;
|
||||
import net.sf.briar.api.protocol.writers.TransportWriter;
|
||||
import net.sf.briar.api.protocol.writers.SubscriptionUpdateWriter;
|
||||
import net.sf.briar.api.protocol.writers.TransportUpdateWriter;
|
||||
import net.sf.briar.api.transport.BatchTransportWriter;
|
||||
import net.sf.briar.api.transport.ConnectionWriter;
|
||||
import net.sf.briar.api.transport.ConnectionWriterFactory;
|
||||
@@ -56,13 +56,14 @@ class OutgoingBatchConnection {
|
||||
long capacity = conn.getRemainingCapacity();
|
||||
if(capacity < MAX_PACKET_LENGTH) throw new IOException();
|
||||
// Write a transport update
|
||||
TransportWriter t = protoFactory.createTransportWriter(out);
|
||||
TransportUpdateWriter t =
|
||||
protoFactory.createTransportUpdateWriter(out);
|
||||
db.generateTransportUpdate(contactId, t);
|
||||
// If there's space, write a subscription update
|
||||
capacity = conn.getRemainingCapacity();
|
||||
if(capacity >= MAX_PACKET_LENGTH) {
|
||||
SubscriptionWriter s =
|
||||
protoFactory.createSubscriptionWriter(out);
|
||||
SubscriptionUpdateWriter s =
|
||||
protoFactory.createSubscriptionUpdateWriter(out);
|
||||
db.generateSubscriptionUpdate(contactId, s);
|
||||
}
|
||||
// Write acks until you can't write acks no more
|
||||
|
||||
@@ -36,8 +36,8 @@ import net.sf.briar.api.protocol.writers.BatchWriter;
|
||||
import net.sf.briar.api.protocol.writers.OfferWriter;
|
||||
import net.sf.briar.api.protocol.writers.ProtocolWriterFactory;
|
||||
import net.sf.briar.api.protocol.writers.RequestWriter;
|
||||
import net.sf.briar.api.protocol.writers.SubscriptionWriter;
|
||||
import net.sf.briar.api.protocol.writers.TransportWriter;
|
||||
import net.sf.briar.api.protocol.writers.SubscriptionUpdateWriter;
|
||||
import net.sf.briar.api.protocol.writers.TransportUpdateWriter;
|
||||
import net.sf.briar.api.transport.ConnectionReader;
|
||||
import net.sf.briar.api.transport.ConnectionReaderFactory;
|
||||
import net.sf.briar.api.transport.ConnectionWriter;
|
||||
@@ -194,13 +194,13 @@ abstract class StreamConnection implements DatabaseListener {
|
||||
OfferWriter offerWriter = protoWriterFactory.createOfferWriter(out);
|
||||
RequestWriter requestWriter =
|
||||
protoWriterFactory.createRequestWriter(out);
|
||||
SubscriptionWriter subscriptionWriter =
|
||||
protoWriterFactory.createSubscriptionWriter(out);
|
||||
TransportWriter transportWriter =
|
||||
protoWriterFactory.createTransportWriter(out);
|
||||
SubscriptionUpdateWriter subscriptionUpdateWriter =
|
||||
protoWriterFactory.createSubscriptionUpdateWriter(out);
|
||||
TransportUpdateWriter transportUpdateWriter =
|
||||
protoWriterFactory.createTransportUpdateWriter(out);
|
||||
// Send the initial packets: transports, subs, any waiting acks
|
||||
sendTransports(transportWriter);
|
||||
sendSubscriptions(subscriptionWriter);
|
||||
sendTransportUpdate(transportUpdateWriter);
|
||||
sendSubscriptionUpdate(subscriptionUpdateWriter);
|
||||
sendAcks(ackWriter);
|
||||
State state = State.SEND_OFFER;
|
||||
// Main loop
|
||||
@@ -234,10 +234,10 @@ abstract class StreamConnection implements DatabaseListener {
|
||||
return;
|
||||
}
|
||||
if((flags & Flags.TRANSPORTS_UPDATED) != 0) {
|
||||
sendTransports(transportWriter);
|
||||
sendTransportUpdate(transportUpdateWriter);
|
||||
}
|
||||
if((flags & Flags.SUBSCRIPTIONS_UPDATED) != 0) {
|
||||
sendSubscriptions(subscriptionWriter);
|
||||
sendSubscriptionUpdate(subscriptionUpdateWriter);
|
||||
}
|
||||
if((flags & Flags.BATCH_RECEIVED) != 0) {
|
||||
sendAcks(ackWriter);
|
||||
@@ -274,10 +274,10 @@ abstract class StreamConnection implements DatabaseListener {
|
||||
return;
|
||||
}
|
||||
if((flags & Flags.TRANSPORTS_UPDATED) != 0) {
|
||||
sendTransports(transportWriter);
|
||||
sendTransportUpdate(transportUpdateWriter);
|
||||
}
|
||||
if((flags & Flags.SUBSCRIPTIONS_UPDATED) != 0) {
|
||||
sendSubscriptions(subscriptionWriter);
|
||||
sendSubscriptionUpdate(subscriptionUpdateWriter);
|
||||
}
|
||||
if((flags & Flags.BATCH_RECEIVED) != 0) {
|
||||
sendAcks(ackWriter);
|
||||
@@ -305,10 +305,10 @@ abstract class StreamConnection implements DatabaseListener {
|
||||
return;
|
||||
}
|
||||
if((flags & Flags.TRANSPORTS_UPDATED) != 0) {
|
||||
sendTransports(transportWriter);
|
||||
sendTransportUpdate(transportUpdateWriter);
|
||||
}
|
||||
if((flags & Flags.SUBSCRIPTIONS_UPDATED) != 0) {
|
||||
sendSubscriptions(subscriptionWriter);
|
||||
sendSubscriptionUpdate(subscriptionUpdateWriter);
|
||||
}
|
||||
if((flags & Flags.BATCH_RECEIVED) != 0) {
|
||||
sendAcks(ackWriter);
|
||||
@@ -388,13 +388,13 @@ abstract class StreamConnection implements DatabaseListener {
|
||||
db.receiveOffer(contactId, o, r);
|
||||
}
|
||||
|
||||
private void sendTransports(TransportWriter t) throws DbException,
|
||||
IOException {
|
||||
private void sendTransportUpdate(TransportUpdateWriter t)
|
||||
throws DbException, IOException {
|
||||
db.generateTransportUpdate(contactId, t);
|
||||
}
|
||||
|
||||
private void sendSubscriptions(SubscriptionWriter s) throws DbException,
|
||||
IOException {
|
||||
private void sendSubscriptionUpdate(SubscriptionUpdateWriter s)
|
||||
throws DbException, IOException {
|
||||
db.generateSubscriptionUpdate(contactId, s);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user