Merge pull request #531 from Flowdalic/truely-async-sends

[core] Add AbstractXMPPConnection.TRUELY_ASYNC_SENDS
master
Florian Schmaus 2 months ago committed by GitHub
commit 382ec723a8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 19
      smack-core/src/main/java/org/jivesoftware/smack/AbstractXMPPConnection.java
  2. 12
      smack-core/src/main/java/org/jivesoftware/smack/SmackConfiguration.java

@ -1,6 +1,6 @@
/**
*
* Copyright 2009 Jive Software, 2018-2020 Florian Schmaus.
* Copyright 2009 Jive Software, 2018-2022 Florian Schmaus.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -2000,11 +2000,18 @@ public abstract class AbstractXMPPConnection implements XMPPConnection {
}, timeout, TimeUnit.MILLISECONDS);
addAsyncStanzaListener(stanzaListener, replyFilter);
try {
sendStanza(stanza);
}
catch (NotConnectedException | InterruptedException exception) {
future.setException(exception);
Runnable sendOperation = () -> {
try {
sendStanza(stanza);
}
catch (NotConnectedException | InterruptedException exception) {
future.setException(exception);
}
};
if (SmackConfiguration.TRUELY_ASYNC_SENDS) {
Async.go(sendOperation);
} else {
sendOperation.run();
}
return future;

@ -1,6 +1,6 @@
/**
*
* Copyright 2003-2007 Jive Software, 2018-2020 Florian Schmaus.
* Copyright 2003-2007 Jive Software, 2018-2022 Florian Schmaus.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -387,4 +387,14 @@ public final class SmackConfiguration {
}
}
}
/**
* If enabled, causes {@link AbstractXMPPConnection} to create a thread for every asynchronous send operation. This
* is meant to work-around a shortcoming of Smack 4.4, where certain send operations are not asynchronous even if
* they should be. This is an expert setting, do not toggle if you do not understand the consequences or have been
* told to do so. Note that it is expected that this will not be needed in future Smack versions.
*
* @since 4.4.6
*/
public static boolean TRUELY_ASYNC_SENDS = false;
}

Loading…
Cancel
Save