diff --git a/briar-api/src/org/briarproject/api/messaging/PacketWriter.java b/briar-api/src/org/briarproject/api/messaging/PacketWriter.java index f76c45414863213a00743c08f4ad6bbfe9f0589c..bc7b4e1de6d4086956003b46872a508e7a548800 100644 --- a/briar-api/src/org/briarproject/api/messaging/PacketWriter.java +++ b/briar-api/src/org/briarproject/api/messaging/PacketWriter.java @@ -29,8 +29,4 @@ public interface PacketWriter { void writeTransportAck(TransportAck a) throws IOException; void writeTransportUpdate(TransportUpdate u) throws IOException; - - void flush() throws IOException; - - void close() throws IOException; } diff --git a/briar-api/src/org/briarproject/api/messaging/PacketWriterFactory.java b/briar-api/src/org/briarproject/api/messaging/PacketWriterFactory.java index 8d75afcb7907c923f101539ea9d3df39ec100676..5c1c5b4ec6a2e8848fb7aa88963a8f91bba04401 100644 --- a/briar-api/src/org/briarproject/api/messaging/PacketWriterFactory.java +++ b/briar-api/src/org/briarproject/api/messaging/PacketWriterFactory.java @@ -4,5 +4,5 @@ import java.io.OutputStream; public interface PacketWriterFactory { - PacketWriter createPacketWriter(OutputStream out, boolean flush); + PacketWriter createPacketWriter(OutputStream out); } diff --git a/briar-core/src/org/briarproject/messaging/PacketWriterFactoryImpl.java b/briar-core/src/org/briarproject/messaging/PacketWriterFactoryImpl.java index 4c14ef1afbf03fc0ae67cfe9690b05cf3870b4b0..46880fc0c5bbd5b58bc8980f47539acf87b6fe33 100644 --- a/briar-core/src/org/briarproject/messaging/PacketWriterFactoryImpl.java +++ b/briar-core/src/org/briarproject/messaging/PacketWriterFactoryImpl.java @@ -21,7 +21,7 @@ class PacketWriterFactoryImpl implements PacketWriterFactory { this.writerFactory = writerFactory; } - public PacketWriter createPacketWriter(OutputStream out, boolean flush) { - return new PacketWriterImpl(serial, writerFactory, out, flush); + public PacketWriter createPacketWriter(OutputStream out) { + return new PacketWriterImpl(serial, writerFactory, out); } } diff --git a/briar-core/src/org/briarproject/messaging/PacketWriterImpl.java b/briar-core/src/org/briarproject/messaging/PacketWriterImpl.java index f17d45cf1db7e3683eca5cae368986105df2fbdb..4b0efd4a7ea5fcec06f1be25205502458717b7bf 100644 --- a/briar-core/src/org/briarproject/messaging/PacketWriterImpl.java +++ b/briar-core/src/org/briarproject/messaging/PacketWriterImpl.java @@ -36,14 +36,12 @@ class PacketWriterImpl implements PacketWriter { private final SerialComponent serial; private final OutputStream out; - private final boolean flush; private final Writer w; PacketWriterImpl(SerialComponent serial, WriterFactory writerFactory, - OutputStream out, boolean flush) { + OutputStream out) { this.serial = serial; this.out = out; - this.flush = flush; w = writerFactory.createWriter(out); } @@ -75,12 +73,10 @@ class PacketWriterImpl implements PacketWriter { for(MessageId m : a.getMessageIds()) w.writeBytes(m.getBytes()); w.writeListEnd(); w.writeStructEnd(); - if(flush) out.flush(); } public void writeMessage(byte[] raw) throws IOException { out.write(raw); - if(flush) out.flush(); } public void writeOffer(Offer o) throws IOException { @@ -89,7 +85,6 @@ class PacketWriterImpl implements PacketWriter { for(MessageId m : o.getMessageIds()) w.writeBytes(m.getBytes()); w.writeListEnd(); w.writeStructEnd(); - if(flush) out.flush(); } public void writeRequest(Request r) throws IOException { @@ -98,14 +93,12 @@ class PacketWriterImpl implements PacketWriter { for(MessageId m : r.getMessageIds()) w.writeBytes(m.getBytes()); w.writeListEnd(); w.writeStructEnd(); - if(flush) out.flush(); } public void writeRetentionAck(RetentionAck a) throws IOException { w.writeStructStart(RETENTION_ACK); w.writeInteger(a.getVersion()); w.writeStructEnd(); - if(flush) out.flush(); } public void writeRetentionUpdate(RetentionUpdate u) throws IOException { @@ -113,14 +106,12 @@ class PacketWriterImpl implements PacketWriter { w.writeInteger(u.getRetentionTime()); w.writeInteger(u.getVersion()); w.writeStructEnd(); - if(flush) out.flush(); } public void writeSubscriptionAck(SubscriptionAck a) throws IOException { w.writeStructStart(SUBSCRIPTION_ACK); w.writeInteger(a.getVersion()); w.writeStructEnd(); - if(flush) out.flush(); } public void writeSubscriptionUpdate(SubscriptionUpdate u) @@ -136,7 +127,6 @@ class PacketWriterImpl implements PacketWriter { w.writeListEnd(); w.writeInteger(u.getVersion()); w.writeStructEnd(); - if(flush) out.flush(); } public void writeTransportAck(TransportAck a) throws IOException { @@ -144,7 +134,6 @@ class PacketWriterImpl implements PacketWriter { w.writeString(a.getId().getString()); w.writeInteger(a.getVersion()); w.writeStructEnd(); - if(flush) out.flush(); } public void writeTransportUpdate(TransportUpdate u) throws IOException { @@ -153,14 +142,5 @@ class PacketWriterImpl implements PacketWriter { w.writeMap(u.getProperties()); w.writeInteger(u.getVersion()); w.writeStructEnd(); - if(flush) out.flush(); - } - - public void flush() throws IOException { - out.flush(); - } - - public void close() throws IOException { - out.close(); } } diff --git a/briar-core/src/org/briarproject/messaging/ReactiveOutgoingSession.java b/briar-core/src/org/briarproject/messaging/ReactiveOutgoingSession.java index c3eae51056073fa352e5d6df0b37c4cdd5fb20ff..3dc7d38c8988b0d22e8b1bd8ccd4e62f2ed77443 100644 --- a/briar-core/src/org/briarproject/messaging/ReactiveOutgoingSession.java +++ b/briar-core/src/org/briarproject/messaging/ReactiveOutgoingSession.java @@ -100,7 +100,7 @@ class ReactiveOutgoingSession implements MessagingSession, EventListener { StreamWriter streamWriter = streamWriterFactory.createStreamWriter( out, maxFrameLength, ctx); out = streamWriter.getOutputStream(); - packetWriter = packetWriterFactory.createPacketWriter(out, true); + packetWriter = packetWriterFactory.createPacketWriter(out); // Start a query for each type of packet, in order of urgency dbExecutor.execute(new GenerateTransportAcks()); dbExecutor.execute(new GenerateTransportUpdates()); @@ -118,8 +118,8 @@ class ReactiveOutgoingSession implements MessagingSession, EventListener { ThrowingRunnable<IOException> task = writerTasks.take(); if(task == CLOSE) break; task.run(); + if(writerTasks.isEmpty()) out.flush(); } - out.flush(); out.close(); } catch(InterruptedException e) { LOG.info("Interrupted while waiting for a packet to write"); diff --git a/briar-core/src/org/briarproject/messaging/SinglePassOutgoingSession.java b/briar-core/src/org/briarproject/messaging/SinglePassOutgoingSession.java index c09829a92044d11ca1b3254a5fcdb513f55f187c..75f991317cf8b94e6f8b483b567902e1699190d3 100644 --- a/briar-core/src/org/briarproject/messaging/SinglePassOutgoingSession.java +++ b/briar-core/src/org/briarproject/messaging/SinglePassOutgoingSession.java @@ -83,7 +83,7 @@ class SinglePassOutgoingSession implements MessagingSession { streamWriter = streamWriterFactory.createStreamWriter(out, maxFrameLength, ctx); out = streamWriter.getOutputStream(); - packetWriter = packetWriterFactory.createPacketWriter(out, false); + packetWriter = packetWriterFactory.createPacketWriter(out); // Start a query for each type of packet, in order of urgency dbExecutor.execute(new GenerateTransportAcks()); dbExecutor.execute(new GenerateTransportUpdates()); diff --git a/briar-tests/src/org/briarproject/ProtocolIntegrationTest.java b/briar-tests/src/org/briarproject/ProtocolIntegrationTest.java index 8cbc75befd6f6970ffc181ea48a36c46aabdd8e7..6165c9c164efe21feceaf02b6ed29c85ea94e445 100644 --- a/briar-tests/src/org/briarproject/ProtocolIntegrationTest.java +++ b/briar-tests/src/org/briarproject/ProtocolIntegrationTest.java @@ -125,8 +125,8 @@ public class ProtocolIntegrationTest extends BriarTestCase { StreamWriter streamWriter = streamWriterFactory.createStreamWriter(out, MAX_FRAME_LENGTH, ctx); OutputStream out1 = streamWriter.getOutputStream(); - PacketWriter packetWriter = packetWriterFactory.createPacketWriter(out1, - false); + PacketWriter packetWriter = + packetWriterFactory.createPacketWriter(out1); packetWriter.writeAck(new Ack(messageIds)); @@ -144,7 +144,7 @@ public class ProtocolIntegrationTest extends BriarTestCase { transportProperties, 1); packetWriter.writeTransportUpdate(tu); - packetWriter.flush(); + out1.flush(); return out.toByteArray(); } diff --git a/briar-tests/src/org/briarproject/messaging/ConstantsTest.java b/briar-tests/src/org/briarproject/messaging/ConstantsTest.java index 1aee065e1f325972074c82e0915b4a8e2a899d20..785ee0e3c35a282d14b9556b24ef55d5082d52cf 100644 --- a/briar-tests/src/org/briarproject/messaging/ConstantsTest.java +++ b/briar-tests/src/org/briarproject/messaging/ConstantsTest.java @@ -179,7 +179,7 @@ public class ConstantsTest extends BriarTestCase { TransportUpdate u = new TransportUpdate(id, p, Long.MAX_VALUE); // Serialise the update ByteArrayOutputStream out = new ByteArrayOutputStream(); - PacketWriter writer = packetWriterFactory.createPacketWriter(out, true); + PacketWriter writer = packetWriterFactory.createPacketWriter(out); writer.writeTransportUpdate(u); // Check the size of the serialised transport update assertTrue(out.size() <= MAX_PACKET_LENGTH); @@ -197,7 +197,7 @@ public class ConstantsTest extends BriarTestCase { SubscriptionUpdate u = new SubscriptionUpdate(groups, Long.MAX_VALUE); // Serialise the update ByteArrayOutputStream out = new ByteArrayOutputStream(); - PacketWriter writer = packetWriterFactory.createPacketWriter(out, true); + PacketWriter writer = packetWriterFactory.createPacketWriter(out); writer.writeSubscriptionUpdate(u); // Check the size of the serialised subscription update assertTrue(out.size() <= MAX_PACKET_LENGTH); @@ -206,7 +206,7 @@ public class ConstantsTest extends BriarTestCase { private void testMessageIdsFitIntoAck(int length) throws Exception { // Create an ack with as many message IDs as possible ByteArrayOutputStream out = new ByteArrayOutputStream(length); - PacketWriter writer = packetWriterFactory.createPacketWriter(out, true); + PacketWriter writer = packetWriterFactory.createPacketWriter(out); int maxMessages = writer.getMaxMessagesForAck(length); Collection<MessageId> ids = new ArrayList<MessageId>(); for(int i = 0; i < maxMessages; i++) @@ -219,7 +219,7 @@ public class ConstantsTest extends BriarTestCase { private void testMessageIdsFitIntoRequest(int length) throws Exception { // Create a request with as many message IDs as possible ByteArrayOutputStream out = new ByteArrayOutputStream(length); - PacketWriter writer = packetWriterFactory.createPacketWriter(out, true); + PacketWriter writer = packetWriterFactory.createPacketWriter(out); int maxMessages = writer.getMaxMessagesForRequest(length); Collection<MessageId> ids = new ArrayList<MessageId>(); for(int i = 0; i < maxMessages; i++) @@ -232,7 +232,7 @@ public class ConstantsTest extends BriarTestCase { private void testMessageIdsFitIntoOffer(int length) throws Exception { // Create an offer with as many message IDs as possible ByteArrayOutputStream out = new ByteArrayOutputStream(length); - PacketWriter writer = packetWriterFactory.createPacketWriter(out, true); + PacketWriter writer = packetWriterFactory.createPacketWriter(out); int maxMessages = writer.getMaxMessagesForOffer(length); Collection<MessageId> ids = new ArrayList<MessageId>(); for(int i = 0; i < maxMessages; i++)