Removed getCapacity() from BatchWriter interface.

This commit is contained in:
akwizgran
2011-09-21 12:37:19 +01:00
parent 7ac615520b
commit 95c3fb4fed
4 changed files with 11 additions and 21 deletions

View File

@@ -7,9 +7,6 @@ import net.sf.briar.api.protocol.BatchId;
/** An interface for creating a batch packet. */
public interface BatchWriter {
/** Returns the capacity of the batch in bytes. */
int getCapacity();
/**
* Attempts to add the given raw message to the batch and returns true if
* it was added.

View File

@@ -31,6 +31,7 @@ import net.sf.briar.api.protocol.GroupId;
import net.sf.briar.api.protocol.Message;
import net.sf.briar.api.protocol.MessageId;
import net.sf.briar.api.protocol.Offer;
import net.sf.briar.api.protocol.ProtocolConstants;
import net.sf.briar.api.protocol.SubscriptionUpdate;
import net.sf.briar.api.protocol.TransportUpdate;
import net.sf.briar.api.protocol.writers.AckWriter;
@@ -422,7 +423,7 @@ DatabaseCleaner.Callback {
try {
T txn = db.startTransaction();
try {
int capacity = b.getCapacity();
int capacity = ProtocolConstants.MAX_PACKET_LENGTH;
Collection<MessageId> sendable =
db.getSendableMessages(txn, c, capacity);
for(MessageId m : sendable) {
@@ -486,12 +487,12 @@ DatabaseCleaner.Callback {
Iterator<MessageId> it = requested.iterator();
while(it.hasNext()) {
MessageId m = it.next();
byte[] raw = db.getMessageIfSendable(txn, c, m);
// If the message is still sendable, try to add
// it to the batch. If the batch is full, don't
// treat the message as considered, and don't
// try to add any further messages.
// it to the batch
byte[] raw = db.getMessageIfSendable(txn, c, m);
if(raw != null) {
// If the batch is full, don't treat the
// message as considered
if(!b.writeMessage(raw)) break;
sent.add(m);
}

View File

@@ -27,12 +27,6 @@ class BatchWriterImpl implements BatchWriter {
this.messageDigest = messageDigest;
}
public int getCapacity() {
// Allow one byte for the batch tag, one for the list start tag and
// one for the list end tag
return ProtocolConstants.MAX_PACKET_LENGTH - 3;
}
public boolean writeMessage(byte[] message) throws IOException {
if(!started) {
messageDigest.reset();
@@ -41,8 +35,8 @@ class BatchWriterImpl implements BatchWriter {
started = true;
}
// Allow one byte for the list end tag
int capacity =
ProtocolConstants.MAX_PACKET_LENGTH - (int) w.getBytesWritten() - 1;
int capacity = ProtocolConstants.MAX_PACKET_LENGTH
- (int) w.getBytesWritten() - 1;
if(capacity < message.length) return false;
// Bypass the writer and write each raw message directly
out.write(message);

View File

@@ -25,6 +25,7 @@ import net.sf.briar.api.protocol.GroupId;
import net.sf.briar.api.protocol.Message;
import net.sf.briar.api.protocol.MessageId;
import net.sf.briar.api.protocol.Offer;
import net.sf.briar.api.protocol.ProtocolConstants;
import net.sf.briar.api.protocol.SubscriptionUpdate;
import net.sf.briar.api.protocol.TransportUpdate;
import net.sf.briar.api.protocol.writers.AckWriter;
@@ -41,8 +42,6 @@ import org.junit.Test;
public abstract class DatabaseComponentTest extends TestCase {
private static final int ONE_MEGABYTE = 1024 * 1024;
protected final Object txn = new Object();
protected final AuthorId authorId;
protected final BatchId batchId;
@@ -740,9 +739,8 @@ public abstract class DatabaseComponentTest extends TestCase {
allowing(database).containsContact(txn, contactId);
will(returnValue(true));
// Get the sendable messages
oneOf(batchWriter).getCapacity();
will(returnValue(ONE_MEGABYTE));
oneOf(database).getSendableMessages(txn, contactId, ONE_MEGABYTE);
oneOf(database).getSendableMessages(txn, contactId,
ProtocolConstants.MAX_PACKET_LENGTH);
will(returnValue(sendable));
// Try to add both messages to the writer - only manage to add one
oneOf(database).getMessage(txn, messageId);