diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessagesSentEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessagesSentEvent.java index 1f392417d..179907a3a 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessagesSentEvent.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessagesSentEvent.java @@ -18,11 +18,13 @@ public class MessagesSentEvent extends Event { private final ContactId contactId; private final Collection messageIds; + private final long totalLength; public MessagesSentEvent(ContactId contactId, - Collection messageIds) { + Collection messageIds, long totalLength) { this.contactId = contactId; this.messageIds = messageIds; + this.totalLength = totalLength; } public ContactId getContactId() { @@ -32,4 +34,8 @@ public class MessagesSentEvent extends Event { public Collection getMessageIds() { return messageIds; } + + public long getTotalLength() { + return totalLength; + } } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/db/DatabaseComponentImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/db/DatabaseComponentImpl.java index 3bb052fe9..f3e818644 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/db/DatabaseComponentImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/db/DatabaseComponentImpl.java @@ -415,14 +415,17 @@ class DatabaseComponentImpl implements DatabaseComponent { throw new NoSuchContactException(); Collection ids = db.getMessagesToSend(txn, c, maxLength, maxLatency); + long totalLength = 0; List messages = new ArrayList<>(ids.size()); for (MessageId m : ids) { - messages.add(db.getMessage(txn, m)); + Message message = db.getMessage(txn, m); + totalLength += message.getRawLength(); + messages.add(message); db.updateExpiryTimeAndEta(txn, c, m, maxLatency); } if (ids.isEmpty()) return null; db.lowerRequestedFlag(txn, c, ids); - transaction.attach(new MessagesSentEvent(c, ids)); + transaction.attach(new MessagesSentEvent(c, ids, totalLength)); return messages; } @@ -467,14 +470,17 @@ class DatabaseComponentImpl implements DatabaseComponent { throw new NoSuchContactException(); Collection ids = db.getRequestedMessagesToSend(txn, c, maxLength, maxLatency); + long totalLength = 0; List messages = new ArrayList<>(ids.size()); for (MessageId m : ids) { - messages.add(db.getMessage(txn, m)); + Message message = db.getMessage(txn, m); + totalLength += message.getRawLength(); + messages.add(message); db.updateExpiryTimeAndEta(txn, c, m, maxLatency); } if (ids.isEmpty()) return null; db.lowerRequestedFlag(txn, c, ids); - transaction.attach(new MessagesSentEvent(c, ids)); + transaction.attach(new MessagesSentEvent(c, ids, totalLength)); return messages; } diff --git a/briar-headless/src/test/java/org/briarproject/briar/headless/messaging/MessagingControllerImplTest.kt b/briar-headless/src/test/java/org/briarproject/briar/headless/messaging/MessagingControllerImplTest.kt index fe0120322..588caf0db 100644 --- a/briar-headless/src/test/java/org/briarproject/briar/headless/messaging/MessagingControllerImplTest.kt +++ b/briar-headless/src/test/java/org/briarproject/briar/headless/messaging/MessagingControllerImplTest.kt @@ -136,7 +136,7 @@ internal class MessagingControllerImplTest : ControllerTest() { val messageId1 = MessageId(getRandomId()) val messageId2 = MessageId(getRandomId()) val messageIds = listOf(messageId1, messageId2) - val event = MessagesSentEvent(contact.id, messageIds) + val event = MessagesSentEvent(contact.id, messageIds, 1234) every { webSocketController.sendEvent( @@ -274,7 +274,7 @@ internal class MessagingControllerImplTest : ControllerTest() { val messageId1 = MessageId(getRandomId()) val messageId2 = MessageId(getRandomId()) val messageIds = listOf(messageId1, messageId2) - val event = MessagesSentEvent(contact.id, messageIds) + val event = MessagesSentEvent(contact.id, messageIds, 1234) val json = """ {