Revert "flush stanzas in batches"

This reverts commit 6bd552f6a3.

fixes #4313

This turned out to be a rather unnecessary optimization that might cause
problems with wake locks (the app is no longer awake after the 400ms timeout)
This commit is contained in:
Daniel Gultsch 2022-04-21 17:04:01 +02:00
parent d7637192e2
commit 544b46ffe1

View file

@ -8,15 +8,12 @@ import java.io.OutputStreamWriter;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import eu.siacs.conversations.Config; import eu.siacs.conversations.Config;
import eu.siacs.conversations.xmpp.stanzas.AbstractStanza; import eu.siacs.conversations.xmpp.stanzas.AbstractStanza;
public class TagWriter { public class TagWriter {
private static final int FLUSH_DELAY = 400;
private OutputStreamWriter outputStream; private OutputStreamWriter outputStream;
private boolean finished = false; private boolean finished = false;
private final LinkedBlockingQueue<AbstractStanza> writeQueue = new LinkedBlockingQueue<AbstractStanza>(); private final LinkedBlockingQueue<AbstractStanza> writeQueue = new LinkedBlockingQueue<AbstractStanza>();
@ -24,8 +21,6 @@ public class TagWriter {
private final Thread asyncStanzaWriter = new Thread() { private final Thread asyncStanzaWriter = new Thread() {
private final AtomicInteger batchStanzaCount = new AtomicInteger(0);
@Override @Override
public void run() { public void run() {
stanzaWriterCountDownLatch = new CountDownLatch(1); stanzaWriterCountDownLatch = new CountDownLatch(1);
@ -34,21 +29,12 @@ public class TagWriter {
break; break;
} }
try { try {
final AbstractStanza stanza = writeQueue.poll(FLUSH_DELAY, TimeUnit.MILLISECONDS); AbstractStanza output = writeQueue.take();
if (stanza != null) { outputStream.write(output.toString());
batchStanzaCount.incrementAndGet(); if (writeQueue.size() == 0) {
outputStream.write(stanza.toString());
} else {
final int batch = batchStanzaCount.getAndSet(0);
if (batch > 1) {
Log.d(Config.LOGTAG, "flushing " + batch + " stanzas");
}
outputStream.flush(); outputStream.flush();
final AbstractStanza nextStanza = writeQueue.take();
batchStanzaCount.incrementAndGet();
outputStream.write(nextStanza.toString());
} }
} catch (final Exception e) { } catch (Exception e) {
break; break;
} }
} }