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:
parent
d7637192e2
commit
544b46ffe1
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue