diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/cleanup/CleanupHook.java b/bramble-api/src/main/java/org/briarproject/bramble/api/cleanup/CleanupHook.java index 6c6af239d..afc8443a3 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/cleanup/CleanupHook.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/cleanup/CleanupHook.java @@ -7,6 +7,8 @@ import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.MessageId; +import java.util.Collection; + /** * An interface for registering a hook with the {@link CleanupManager} * that will be called when a message's cleanup deadline is reached. @@ -15,12 +17,10 @@ import org.briarproject.bramble.api.sync.MessageId; public interface CleanupHook { /** - * Called when a message's cleanup deadline is reached. If this method - * returns true, a {@link MessagesCleanedUpEvent} will be broadcast. - * - * @return True if the message has been deleted, or false if it has not, - * in which case the message's cleanup timer will be stopped + * Called when the cleanup deadlines of one or more messages are reached. + * When this method returns, a {@link MessagesCleanedUpEvent} will be + * broadcast. */ - boolean deleteMessage(Transaction txn, GroupId g, MessageId m) - throws DbException; + void deleteMessages(Transaction txn, GroupId g, + Collection messageIds) throws DbException; } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/cleanup/CleanupManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/cleanup/CleanupManagerImpl.java index b87c53f4c..9d328479c 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/cleanup/CleanupManagerImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/cleanup/CleanupManagerImpl.java @@ -137,6 +137,7 @@ class CleanupManagerImpl implements CleanupManager, Service, EventListener { if (LOG.isLoggable(INFO)) { LOG.info(messageIds.size() + " messages to delete"); } + for (MessageId m : messageIds) db.stopCleanupTimer(txn, m); Group group = db.getGroup(txn, groupId); ClientMajorVersion cv = new ClientMajorVersion(group.getClientId(), group.getMajorVersion()); @@ -144,10 +145,7 @@ class CleanupManagerImpl implements CleanupManager, Service, EventListener { if (hook == null) { throw new IllegalStateException("No cleanup hook for " + cv); } - for (MessageId m : messageIds) { - hook.deleteMessage(txn, groupId, m); - db.stopCleanupTimer(txn, m); - } + hook.deleteMessages(txn, groupId, messageIds); txn.attach(new MessagesCleanedUpEvent(groupId, messageIds)); } }