mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-22 01:40:07 +01:00
Decrease db thrashing when starting expiration timers for messages.
This commit is contained in:
@@ -2,15 +2,19 @@ package org.thoughtcrime.securesms.service;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import org.signal.core.util.logging.Log;
|
||||
import org.thoughtcrime.securesms.database.MessageTable;
|
||||
import org.thoughtcrime.securesms.database.SignalDatabase;
|
||||
import org.thoughtcrime.securesms.database.model.MessageRecord;
|
||||
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.TreeSet;
|
||||
import java.util.concurrent.Executor;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class ExpiringMessageManager {
|
||||
|
||||
@@ -45,6 +49,17 @@ public class ExpiringMessageManager {
|
||||
}
|
||||
}
|
||||
|
||||
public void scheduleDeletion(@NonNull List<MessageTable.ExpirationInfo> expirationInfos) {
|
||||
List<ExpiringMessageReference> references = expirationInfos.stream()
|
||||
.map(info -> new ExpiringMessageReference(info.getId(), info.isMms(), info.getExpireStarted() + info.getExpiresIn()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
synchronized (expiringMessageReferences) {
|
||||
expiringMessageReferences.addAll(references);
|
||||
expiringMessageReferences.notifyAll();
|
||||
}
|
||||
}
|
||||
|
||||
public void checkSchedule() {
|
||||
synchronized (expiringMessageReferences) {
|
||||
expiringMessageReferences.notifyAll();
|
||||
|
||||
Reference in New Issue
Block a user