mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-17 13:19:52 +01:00
Attach the IDs of expired messages to MessageExpiredEvent.
This commit is contained in:
@@ -1,9 +1,22 @@
|
|||||||
package net.sf.briar.api.db.event;
|
package net.sf.briar.api.db.event;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
import net.sf.briar.api.messaging.MessageId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An event that is broadcast when one or messages expire from the database,
|
* An event that is broadcast when one or messages expire from the database,
|
||||||
* potentially changing the database's retention time.
|
* potentially changing the database's retention time.
|
||||||
*/
|
*/
|
||||||
public class MessageExpiredEvent extends DatabaseEvent {
|
public class MessageExpiredEvent extends DatabaseEvent {
|
||||||
|
|
||||||
|
private final Collection<MessageId> expired;
|
||||||
|
|
||||||
|
public MessageExpiredEvent(Collection<MessageId> expired) {
|
||||||
|
this.expired = expired;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Collection<MessageId> getMessageIds() {
|
||||||
|
return expired;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1895,20 +1895,19 @@ DatabaseCleaner.Callback {
|
|||||||
* removed.
|
* removed.
|
||||||
*/
|
*/
|
||||||
private boolean expireMessages(int size) throws DbException {
|
private boolean expireMessages(int size) throws DbException {
|
||||||
boolean removed = false;
|
Collection<MessageId> expired;
|
||||||
messageLock.writeLock().lock();
|
messageLock.writeLock().lock();
|
||||||
try {
|
try {
|
||||||
retentionLock.writeLock().lock();
|
retentionLock.writeLock().lock();
|
||||||
try {
|
try {
|
||||||
T txn = db.startTransaction();
|
T txn = db.startTransaction();
|
||||||
try {
|
try {
|
||||||
Collection<MessageId> old = db.getOldMessages(txn, size);
|
expired = db.getOldMessages(txn, size);
|
||||||
if(!old.isEmpty()) {
|
if(!expired.isEmpty()) {
|
||||||
for(MessageId m : old) removeMessage(txn, m);
|
for(MessageId m : expired) removeMessage(txn, m);
|
||||||
db.incrementRetentionVersions(txn);
|
db.incrementRetentionVersions(txn);
|
||||||
removed = true;
|
|
||||||
if(LOG.isLoggable(INFO))
|
if(LOG.isLoggable(INFO))
|
||||||
LOG.info("Expired " + old.size() + " messages");
|
LOG.info("Expired " + expired.size() + " messages");
|
||||||
}
|
}
|
||||||
db.commitTransaction(txn);
|
db.commitTransaction(txn);
|
||||||
} catch(DbException e) {
|
} catch(DbException e) {
|
||||||
@@ -1921,8 +1920,9 @@ DatabaseCleaner.Callback {
|
|||||||
} finally {
|
} finally {
|
||||||
messageLock.writeLock().unlock();
|
messageLock.writeLock().unlock();
|
||||||
}
|
}
|
||||||
if(removed) callListeners(new MessageExpiredEvent());
|
if(expired.isEmpty()) return false;
|
||||||
return removed;
|
callListeners(new MessageExpiredEvent(expired));
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user