mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2025-09-09 18:29:45 +02:00
Improve OfflineMessages.getMessages()
poll the result before waiting for a message (with nextResult()), in order to prevent waiting unnecessarily. Add PacketCollector.pollResultOrThrow()
This commit is contained in:
parent
5dd97a363c
commit
187e158260
2 changed files with 30 additions and 0 deletions
|
@ -194,6 +194,17 @@ public class OfflineMessageManager {
|
|||
Message message = messageCollector.nextResult();
|
||||
while (message != null) {
|
||||
messages.add(message);
|
||||
// It is important that we query the resultCollector before the messageCollector
|
||||
Packet result = resultCollector.pollResultOrThrow();
|
||||
message = messageCollector.pollResult();
|
||||
if (message == null && result != null) {
|
||||
// No new messages, but we have a non-error IQ response, we are done
|
||||
return messages;
|
||||
} else if (message != null) {
|
||||
// We have received a message without waiting, great, continue to add this message and proceed with
|
||||
// the loop
|
||||
continue;
|
||||
}
|
||||
message = messageCollector.nextResult();
|
||||
}
|
||||
resultCollector.nextResultOrThrow();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue