package ws.wamp.jawampa.transport.netty;
import io.netty.handler.ssl.SslContext;
import ws.wamp.jawampa.connection.IWampClientConnectionConfig;
public class NettyWampConnectionConfig implements IWampClientConnectionConfig {
static final int DEFAULT_MAX_FRAME_PAYLOAD_LENGTH = 65535;
SslContext sslContext;
int maxFramePayloadLength;
NettyWampConnectionConfig(SslContext sslContext, int maxFramePayloadLength) {
this.sslContext = sslContext;
this.maxFramePayloadLength = maxFramePayloadLength;
}
/**
* the SslContext which will be used to create Ssl connections to the WAMP
* router. If this is set to null a default (unsecure) SSL client context will be created
* and used.
*/
public SslContext sslContext() {
return sslContext;
}
public int getMaxFramePayloadLength() {
return maxFramePayloadLength;
}
/**
* Builder class that must be used to create a {@link NettyWampConnectionConfig}
* instance.
*/
public static class Builder {
SslContext sslContext;
int maxFramePayloadLength = DEFAULT_MAX_FRAME_PAYLOAD_LENGTH;
/**
* Allows to set the SslContext which will be used to create Ssl connections to the WAMP
* router. If this is set to null a default (unsecure) SSL client context will be created
* and used.
* @param sslContext The SslContext that will be used for SSL connections.
* @return The {@link Builder} object
*/
public Builder withSslContext(SslContext sslContext) {
this.sslContext = sslContext;
return this;
}
public Builder withMaxFramePayloadLength(int maxFramePayloadLength){
if ( maxFramePayloadLength <= 0 ){
throw new IllegalArgumentException("maxFramePayloadLength parameter cannot be negative");
}
this.maxFramePayloadLength = maxFramePayloadLength;
return this;
}
public NettyWampConnectionConfig build() {
return new NettyWampConnectionConfig(sslContext, maxFramePayloadLength);
}
}
}