From 24b940138fb5b7a5eb4ac788c3f6ac5a70b0407f Mon Sep 17 00:00:00 2001 From: Florian Schmaus Date: Tue, 13 Jan 2015 11:15:55 +0100 Subject: [PATCH] Improve XMPPTCPConnection.processHandledCount(long) Add shortcut: If stanzaAcknowledgedListeners is not empty, then we don't need to check the stanzaIdAcknowledgedListeners. Also fixes a bug, instead of if (id != null && stanzaAcknowledgedListeners.contains(id)) { it must be if (id != null && stanzaIdAcknowledgedListeners.containsKey(id)) { --- .../smack/tcp/XMPPTCPConnection.java | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/smack-tcp/src/main/java/org/jivesoftware/smack/tcp/XMPPTCPConnection.java b/smack-tcp/src/main/java/org/jivesoftware/smack/tcp/XMPPTCPConnection.java index df0166879..268835164 100644 --- a/smack-tcp/src/main/java/org/jivesoftware/smack/tcp/XMPPTCPConnection.java +++ b/smack-tcp/src/main/java/org/jivesoftware/smack/tcp/XMPPTCPConnection.java @@ -1630,17 +1630,24 @@ public class XMPPTCPConnection extends AbstractXMPPConnection { ackedStanzas.add(ackedStanza); } - boolean atLeastOneStanzaIdAcknowledgedListener = false; - for (Packet ackedStanza : ackedStanzas) { - String id = ackedStanza.getPacketID(); - if (id != null && stanzaAcknowledgedListeners.contains(id)) { - atLeastOneStanzaIdAcknowledgedListener = true; - break; + boolean atLeastOneStanzaAcknowledgedListener = false; + if (!stanzaAcknowledgedListeners.isEmpty()) { + // If stanzaAcknowledgedListeners is not empty, the we have at least one + atLeastOneStanzaAcknowledgedListener = true; + } + else { + // Otherwise we look for a matching id in the stanza *id* acknowledged listeners + for (Packet ackedStanza : ackedStanzas) { + String id = ackedStanza.getPacketID(); + if (id != null && stanzaIdAcknowledgedListeners.containsKey(id)) { + atLeastOneStanzaAcknowledgedListener = true; + break; + } } } // Only spawn a new thread if there is a chance that some listener is invoked - if (atLeastOneStanzaIdAcknowledgedListener || !stanzaAcknowledgedListeners.isEmpty()) { + if (atLeastOneStanzaAcknowledgedListener) { asyncGo(new Runnable() { @Override public void run() {