mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2024-12-22 04:27:58 +01:00
Enables the HTTP compression in JBOSH
Adds an extra parameter "compressionEnabled" to ConnectionConfiguration that is used to set the setCompressionEnabled() of BOSHClientConfig
This commit is contained in:
parent
b7ea226c56
commit
1ea10831b6
3 changed files with 23 additions and 32 deletions
|
@ -157,6 +157,8 @@ public class XMPPBOSHConnection extends AbstractXMPPConnection {
|
|||
if (config.isProxyEnabled()) {
|
||||
cfgBuilder.setProxy(config.getProxyAddress(), config.getProxyPort());
|
||||
}
|
||||
cfgBuilder.setCompressionEnabled(config.isCompressionEnabled());
|
||||
|
||||
client = BOSHClient.create(cfgBuilder.build());
|
||||
|
||||
client.addBOSHClientConnListener(new BOSHConnectionListener());
|
||||
|
|
|
@ -125,6 +125,8 @@ public abstract class ConnectionConfiguration {
|
|||
|
||||
private final Set<String> enabledSaslMechanisms;
|
||||
|
||||
private final boolean compressionEnabled;
|
||||
|
||||
protected ConnectionConfiguration(Builder<?,?> builder) {
|
||||
authzid = builder.authzid;
|
||||
username = builder.username;
|
||||
|
@ -162,6 +164,8 @@ public abstract class ConnectionConfiguration {
|
|||
allowNullOrEmptyUsername = builder.allowEmptyOrNullUsername;
|
||||
enabledSaslMechanisms = builder.enabledSaslMechanisms;
|
||||
|
||||
compressionEnabled = builder.compressionEnabled;
|
||||
|
||||
// If the enabledSaslmechanisms are set, then they must not be empty
|
||||
assert (enabledSaslMechanisms != null ? !enabledSaslMechanisms.isEmpty() : true);
|
||||
|
||||
|
@ -440,8 +444,7 @@ public abstract class ConnectionConfiguration {
|
|||
* @return true if the connection is going to use stream compression.
|
||||
*/
|
||||
public boolean isCompressionEnabled() {
|
||||
// Compression for non-TCP connections is always disabled
|
||||
return false;
|
||||
return compressionEnabled;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -513,6 +516,7 @@ public abstract class ConnectionConfiguration {
|
|||
private boolean saslMechanismsSealed;
|
||||
private Set<String> enabledSaslMechanisms;
|
||||
private X509TrustManager customX509TrustManager;
|
||||
private boolean compressionEnabled = false;
|
||||
|
||||
protected Builder() {
|
||||
if (SmackConfiguration.DEBUG) {
|
||||
|
@ -946,6 +950,21 @@ public abstract class ConnectionConfiguration {
|
|||
return getThis();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets if the connection is going to use compression (default false).
|
||||
*
|
||||
* Compression is only activated if the server offers compression. With compression network
|
||||
* traffic can be reduced up to 90%. By default compression is disabled.
|
||||
*
|
||||
* @param compressionEnabled if the connection is going to use compression on the HTTP level.
|
||||
* @return a reference to this object.
|
||||
*/
|
||||
public B setCompressionEnabled(boolean compressionEnabled) {
|
||||
this.compressionEnabled = compressionEnabled;
|
||||
return getThis();
|
||||
}
|
||||
|
||||
|
||||
public abstract C build();
|
||||
|
||||
protected abstract B getThis();
|
||||
|
|
|
@ -41,8 +41,6 @@ public final class XMPPTCPConnectionConfiguration extends ConnectionConfiguratio
|
|||
*/
|
||||
public static int DEFAULT_CONNECT_TIMEOUT = 30000;
|
||||
|
||||
private final boolean compressionEnabled;
|
||||
|
||||
/**
|
||||
* How long the socket will wait until a TCP connection is established (in milliseconds).
|
||||
*/
|
||||
|
@ -50,23 +48,9 @@ public final class XMPPTCPConnectionConfiguration extends ConnectionConfiguratio
|
|||
|
||||
private XMPPTCPConnectionConfiguration(Builder builder) {
|
||||
super(builder);
|
||||
compressionEnabled = builder.compressionEnabled;
|
||||
connectTimeout = builder.connectTimeout;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the connection is going to use stream compression. Stream compression
|
||||
* will be requested after TLS was established (if TLS was enabled) and only if the server
|
||||
* offered stream compression. With stream compression network traffic can be reduced
|
||||
* up to 90%. By default compression is disabled.
|
||||
*
|
||||
* @return true if the connection is going to use stream compression.
|
||||
*/
|
||||
@Override
|
||||
public boolean isCompressionEnabled() {
|
||||
return compressionEnabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* How long the socket will wait until a TCP connection is established (in milliseconds). Defaults to {@link #DEFAULT_CONNECT_TIMEOUT}.
|
||||
*
|
||||
|
@ -91,20 +75,6 @@ public final class XMPPTCPConnectionConfiguration extends ConnectionConfiguratio
|
|||
private Builder() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets if the connection is going to use stream compression. Stream compression
|
||||
* will be requested after TLS was established (if TLS was enabled) and only if the server
|
||||
* offered stream compression. With stream compression network traffic can be reduced
|
||||
* up to 90%. By default compression is disabled.
|
||||
*
|
||||
* @param compressionEnabled if the connection is going to use stream compression.
|
||||
* @return a reference to this object.
|
||||
*/
|
||||
public Builder setCompressionEnabled(boolean compressionEnabled) {
|
||||
this.compressionEnabled = compressionEnabled;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set how long the socket will wait until a TCP connection is established (in milliseconds).
|
||||
*
|
||||
|
|
Loading…
Reference in a new issue